Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 回发到控制器操作时,来自控制器的ASP ViewModel(模型不是Model=>;Model.FieldName)变为null_C#_Asp.net Mvc_Asp.net Mvc 4_Null - Fatal编程技术网

C# 回发到控制器操作时,来自控制器的ASP ViewModel(模型不是Model=>;Model.FieldName)变为null

C# 回发到控制器操作时,来自控制器的ASP ViewModel(模型不是Model=>;Model.FieldName)变为null,c#,asp.net-mvc,asp.net-mvc-4,null,C#,Asp.net Mvc,Asp.net Mvc 4,Null,我有一个带有强类型模型的mvc aspx页面,它看起来像这样 <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<DeliveryService.ViewModels.DeliveryRequestViewModel>" %> <%: Html.EditorFor(model => model

我有一个带有强类型模型的mvc aspx页面,它看起来像这样

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<DeliveryService.ViewModels.DeliveryRequestViewModel>" %>
<%: Html.EditorFor(model => model.Address) %>

因此,当我调用create函数时,页面将显示来自视图模型的初始化数据

但是当我提交表单时(调用回发创建函数)

我得到了一个空异常错误,如以下行:

<%: Html.DropDownListFor(model => model.FromGroup, Model.LocationList) %>
model.FromGroup,model.LocationList)%%>
错误指向Model.LocationList

我在aspx页面中有另一个字段,但它不会触发null异常,代码如下所示

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<DeliveryService.ViewModels.DeliveryRequestViewModel>" %>
<%: Html.EditorFor(model => model.Address) %>
model.Address)%%>
请指出我的错误,为什么当我使用第一个字母大写的模型时,我会得到一个空异常错误。多谢各位

我还有一个问题:

<%: Html.EditorFor(model => model.DeliveryRequestNumber, new {@readonly = "readonly"}) %>
model.DeliveryRequestNumber,新的{@readonly=“readonly”})%>
使用editorfor创建只读文本框的正确语法是什么?尝试了此操作,但呈现的html代码无效

<input class="text-box single-line valid" id="DeliveryRequestNumber" name="DeliveryRequestNumber" type="text" value="somevaluegeneratedfrommodel">

1我为什么要获得NRE?

我猜,但你提到的“回发”可能意味着你来自WebForms背景。在MVC中,控制器操作必须始终返回渲染视图所需的完整状态(例如,在ViewModel中),即使在POST之后:

[HttpPost]
ActionResult Create(DeliveryRequestViewModel someModel)
{
   //  Do something
   return View("SomeView", someModel); <-- Remember to pass the ViewModel again
}
model
是lambda表达式的占位符变量,它将
Address
属性投影到变量之外。占位符,因为它可以是任何内容,例如

Html.EditorFor(foo => foo.Address)
3 Re:只读文本框


另外,如果您只想呈现值,我想您可以使用
Html.DisplayFor

工作得很好!非常感谢Stuart先生:D也感谢模型和模型解释,以及只读问题