我有一个带强类型模型的mvc aspx页面,它看起来像这样
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<DeliveryService.ViewModels.DeliveryRequestViewModel>" %>
所以当我调用create函数时,页面会显示视图模型中的初始化数据
但是当我提交表单(调用回发创建函数)
时我遇到了一个类似于行的空异常错误:
<%: Html.DropDownListFor(model => model.FromGroup, Model.LocationList) %>
错误指向Model.LocationList
我在aspx页面中有另一个字段,但它没有触发null异常,代码看起来像这样
<%: Html.EditorFor(model => model.Address) %>
请指出我的错误,为什么当我在第一个字母处使用带有大写字母的模型时,我得到一个空的异常错误。非常感谢你
我有一个额外的问题:
<%: Html.EditorFor(model => model.DeliveryRequestNumber, new {@readonly = "readonly"}) %>
使用editorfor创建只读文本框的正确语法是什么?试过这个,但渲染的HTML代码是
<input class="text-box single-line valid" id="DeliveryRequestNumber" name="DeliveryRequestNumber" type="text" value="somevaluegeneratedfrommodel">
答案 0 :(得分:0)
1为什么我会获得NRE?
我在猜测,但你提到的是“回复”&#39;可能意味着你来自WebForms背景。在MVC中,即使在POST之后,控制器动作也必须始终返回呈现视图所需的FULL状态(例如在ViewModel中):
[HttpPost]
ActionResult Create(DeliveryRequestViewModel someModel)
{
// Do something
return View("SomeView", someModel); <-- Remember to pass the ViewModel again
}
2 Re:模型与模型
请指出我的错误,为什么当我在第一个字母处使用带有大写字母的模型时,我得到一个空的异常错误。非常感谢你
Model
是页面模型类型的实例 - 在这种情况下为DeliveryRequestViewModel
。 (来自.aspx的Inherits="ViewPage<DeliveryRequestViewModel>
或剃刀中的@model
在这种情况下:
<%: Html.EditorFor(model => model.Address) %>
model
是lambda表达式的占位符变量,它将Address
属性从变量中调出。占位符,因为它可以是任何东西,例如
Html.EditorFor(foo => foo.Address)
3 Re:只读文本框
另外,如果您只想渲染值,我猜您可以使用Html.DisplayFor