ASP.NET MVC Проблема с проверкой - PullRequest
0 голосов
/ 06 ноября 2008

У меня есть этот простой контроллер:

public class OneController : Controller
{
    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult Create()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(IList<TestModel> m)
    {
        return View(m);
    }
}

И очень простое представление с двумя объектами типа TestModel, правильно проиндексированными. Когда я отправляю форму с неверными данными, я получаю представление с подсвеченными ошибками. Однако, когда я повторно отправляю его (ничего не меняя), я получаю эту ошибку:

[NullReferenceException: ссылка на объект не установлена ​​на экземпляр объект.] System.Web.Mvc.DefaultModelBinder.UpdateCollection (ModelBindingContext bindingContext, введите itemType) +612 System.Web.Mvc.DefaultModelBinder.BindModelCore (ModelBindingContext bindingContext) +519 System.Web.Mvc.DefaultModelBinder.BindModel (ModelBindingContext bindingContext) +829 System.Web.Mvc.ControllerActionInvoker.GetParameterValue (ParameterInfo параметрInfo) +313 System.Web.Mvc.ControllerActionInvoker.GetParameterValues ​​(MethodInfo methodInfo) +399 System.Web.Mvc.ControllerActionInvoker.InvokeAction (ControllerContext controllerContext, String actionName) +232 System.Web.Mvc.Controller.ExecuteCore () +152 System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) +86 System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) +28 System.Web.Mvc.MvcHandler.ProcessRequest (HttpContextBase httpContext) +332 System.Web.Mvc.MvcHandler.ProcessRequest (HttpContext httpContext) +55 System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest (HttpContext httpContext) +28 System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute () +358 System.Web.HttpApplication.ExecuteStep (IExecutionStep шаг, логическое и завершено синхронно) + 64

Есть идеи, как это отладить?

Ответы [ 3 ]

3 голосов
/ 06 ноября 2008

Я уже просматривал эту статью и обнаружил ошибку, которая у меня была (тонкая, но критическая). Если вы визуализируете скрытое поле с индексом, используя Html.Hidden, помощник будет «накапливать» предыдущие значения, так что вы получите скрытое высказывание index = 1, а следующее высказывание index = 1,2.

Смена вспомогательного вызова на скрытое вручную поле скрыла проблему.

1 голос
/ 09 января 2009

Спасибо, что исправили!

я заменил

<%= Html.Hidden("submitFormFields.index", controlID) %>

с

<input type="hidden" id="submitFormFields.index" name="submitFormFields.index" value="<%=controlID %>" />

Если мы сообщим об этом как об ошибке - было бы неплохо исправить это для ASP.Net MVC RC1

1 голос
/ 06 ноября 2008

Не уверен, что смогу ответить, не увидев больше кода и настройки вашей формы. Но вы можете взглянуть на запись в блоге Фила Хаака о привязке модели к списку .
Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...