Asp.net mvc 我试图从显示所述模型细节的表单返回模型,但返回空值
我的表单没有返回空模型 我在详细信息页面上查看特定模型的详细信息,然后,如果用户按下SubmitPost按钮,视图将返回该模型 查看Asp.net mvc 我试图从显示所述模型细节的表单返回模型,但返回空值,asp.net-mvc,asp.net-mvc-3,submit,Asp.net Mvc,Asp.net Mvc 3,Submit,我的表单没有返回空模型 我在详细信息页面上查看特定模型的详细信息,然后,如果用户按下SubmitPost按钮,视图将返回该模型 查看 @model MyApp.Models.MyModel @using (Html.BeginForm("ApplyUsingDetails", "Controller", FormMethod.Post)) { <fieldset> <legend>Course</legend> <
@model MyApp.Models.MyModel
@using (Html.BeginForm("ApplyUsingDetails", "Controller", FormMethod.Post))
{
<fieldset>
<legend>Course</legend>
<div class="display-label">MyModel ID</div>
<div class="display-field">
@Html.DisplayFor(model => model.CourseID)
</div>
<div class="display-label">Title</div>
<div class="display-field">
@Html.DisplayFor(model => model.Title)
</div>
etc. . .
<p><input type="submit" value="SubmitPost" /></p>
<more misc information for the view>
</fieldset>
}
给出一些上下文:我使用此表单允许学生查看某个类的详细信息,然后单击按钮应用于该类
关于我的模型为什么为空的任何线索?根据您提供的示例,您似乎没有在表单中包含任何
MyModel
字段。作为测试,请尝试包含一个隐藏字段或使用@Html.HiddenFor(model=>model.CourseID)
,查看是否有任何值发布。根据您提供的示例,表单中似乎没有包含任何MyModel
的字段。作为测试,请尝试包含一个隐藏字段或使用@Html.HiddenFor(model=>model.CourseID)
,查看是否有任何值已发布。您需要在表单中包含输入元素,以便将它们发布到控制器并绑定到控制器的模型。ASP.Net MVC中的模型绑定采用您提交的表单值,并在控制器的模型上查找具有相同名称的属性,然后尝试使用表单值设置属性。表单中没有输入字段意味着模型绑定无法粘贴到控制器的模型中
我建议使用带有css样式的只读输入元素,使其看起来像div.display-field
<div class="display-label">Course ID</div>
<div>
@Html.TextBoxFor(model=>model.CourseID, new{readonly="readonly", @class="display-field"})
</div>
课程ID
@Html.TextBoxFor(model=>model.CourseID,新的{readonly=“readonly”,@class=“display field”})
根据页面上的其他样式,可能需要也可能不需要将输入包装到div中。您需要在表单中包含输入元素,以便将它们发布到控制器并绑定到控制器的模型。ASP.Net MVC中的模型绑定采用您提交的表单值,并在控制器的模型上查找具有相同名称的属性,然后尝试使用表单值设置属性。表单中没有输入字段意味着模型绑定无法粘贴到控制器的模型中 我建议使用带有css样式的只读输入元素,使其看起来像
div.display-field
<div class="display-label">Course ID</div>
<div>
@Html.TextBoxFor(model=>model.CourseID, new{readonly="readonly", @class="display-field"})
</div>
课程ID
@Html.TextBoxFor(model=>model.CourseID,新的{readonly=“readonly”,@class=“display field”})
根据页面上的其他样式,可能需要也可能不需要将输入包装到div中。
DisplayFor
HTML帮助程序将只返回一个表示属性值的字符串。如果您的属性是布尔类型,则会将其呈现为禁用的复选框。只要你没有任何输入控件,你就不会得到值。因此,在本例中,您可以简单地使用@Html.HiddenFor
Html助手方法
HTML.HiddenFor
Helper方法为类型为hidden的输入元素生成HTM标记,其id和名称与表达式相同
@using (Html.BeginForm("ApplyUsingDetails", "Controller", FormMethod.Post))
{
<div class="display-label">MyModel ID</div>
<div class="display-field">
@Html.DisplayFor(model => model.CourseID)
@Html.HiddenFor(m=>m.CourseId)
</div>
<input type="submit" value="Save" />
}
@使用(Html.BeginForm(“applyusingtails”、“Controller”、FormMethod.Post))
{
MyModel ID
@DisplayFor(model=>model.CourseID)
@Html.HiddenFor(m=>m.CourseId)
}
现在,课程id的值将在HTTPPost操作方法中可用。
DisplayFor
HTML帮助程序将只返回一个表示属性值的字符串。如果您的属性是布尔类型,则会将其呈现为禁用的复选框。只要你没有任何输入控件,你就不会得到值。因此,在本例中,您可以简单地使用@Html.HiddenFor
Html助手方法
HTML.HiddenFor
Helper方法为类型为hidden的输入元素生成HTM标记,其id和名称与表达式相同
@using (Html.BeginForm("ApplyUsingDetails", "Controller", FormMethod.Post))
{
<div class="display-label">MyModel ID</div>
<div class="display-field">
@Html.DisplayFor(model => model.CourseID)
@Html.HiddenFor(m=>m.CourseId)
</div>
<input type="submit" value="Save" />
}
@使用(Html.BeginForm(“applyusingtails”、“Controller”、FormMethod.Post))
{
MyModel ID
@DisplayFor(model=>model.CourseID)
@Html.HiddenFor(m=>m.CourseId)
}
现在,课程id的值将在您的HTTPPost操作方法中可用。隐藏值在显示页面的源上返回适当的值,但我仍然返回空值,是否有一个特定的位置可以放置@Html.HiddenFor。要使其工作?在
@中使用部分应该足够了,至少可以查看您是否发布了任何值。在我处理了这里的内容后开始工作-似乎就是答案。隐藏值在显示页面的源上返回适当的值,但我仍然返回空值,是否有一个特定的地方我会把@Html.HiddenFor。要让它工作?在@中使用部分应该足够了,至少可以查看您是否发布了任何值。在我处理了这里的内容之后开始工作-似乎就是答案。