C# MVC模型绑定,缺少初始模型
在本例中,我有两个页面,在第一个页面的post方法中,我返回第二个页面的view/viewmodel,如下所示:C# MVC模型绑定,缺少初始模型,c#,.net,asp.net-mvc,C#,.net,Asp.net Mvc,在本例中,我有两个页面,在第一个页面的post方法中,我返回第二个页面的view/viewmodel,如下所示: [HTTPPost] public Task<ActionResult> Page1(Page1Model model) { var Page2Model = GrabDataMethod(model); return View("Page2", Page2Model); //Point 1 }
[HTTPPost]
public Task<ActionResult> Page1(Page1Model model)
{
var Page2Model = GrabDataMethod(model);
return View("Page2", Page2Model); //Point 1
}
[HTTPPost]
public Task<ActionResult> Page2(Page2Model model //Point 2)
{
var updatedModel= RunFiltersMethod(model)
return View(updatedModel);
}
[HTTPPost]
公共任务第1页(第1页模型)
{
var Page2Model=GrabDataMethod(model);
返回视图(“Page2”,Page2Model);//第1点
}
[HTTPPost]
公共任务第2页(第2页模型//第2点)
{
var updateModel=RunFiltersMethod(模型)
返回视图(更新的模型);
}
现在,在本例中,Page2从(第1点)正确呈现,并使用上面从GrabDataMethod传入的所有值。但是,当我为Page2发布时,我在(第2点)收到的Page2Model没有任何原始条目,例如,Page2本身未直接修改的所有内容都为null或默认值(事实上,来自POST方法的模型似乎完全是一个新模型)。我已经做了一个可怕的解决办法暂时,但我需要一个适当的修复,有任何原因,这将发生吗
第2页查看代码
@model Mvc2013.Models.Page2Model
@using (Html.BeginForm("Page2", "Controller"))
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true)
<div class="row">
<div class="col-md-12">
@Html.Kendo().Chart(<!-- code removed, this is working -->)
</div>
</div>
<div class="row">
<div class="col-md-3">
<div class="col-md-8">
@Html.LabelFor(model => model.Prop1, new { @class = "control-label" })
</div>
<div class="col-md-4">
@Html.EditorFor(model => model.Prop1, new { @class = "control-label" })
@Html.ValidationMessageFor(model => model.Prop1)
</div>
</div>
<div class="col-md-3">
<div class="col-md-8">
@Html.LabelFor(model => model.Prop2, new { @class = "control-label" })
</div>
<div class="col-md-4">
@Html.EditorFor(model => model.Prop2, new { @class = "control-label"})
@Html.ValidationMessageFor(model => model.Prop2)
</div>
</div>
</div>
<!-- This carries on similarly for lots more attributes -->
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
@model mvc213.Models.Page2Model
@使用(Html.BeginForm(“Page2”,“Controller”))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.Kendo().Chart()
@LabelFor(model=>model.Prop1,新的{@class=“control label”})
@EditorFor(model=>model.Prop1,新的{@class=“control label”})
@Html.ValidationMessageFor(model=>model.Prop1)
@LabelFor(model=>model.Prop2,新的{@class=“control label”})
@EditorFor(model=>model.Prop2,新的{@class=“control label”})
@Html.ValidationMessageFor(model=>model.Prop2)
}在文件中,您应该添加
@Html.HiddenFor(model=>model.Something)
其中Something是您希望返回回发的属性
如果没有,则属性值将是默认值。什么是Page1Model?Page2Model与Page1Model相同吗?如果您将不同的模型发布到同一个操作,这将无法正确绑定。@Fals我不清楚所涉及的两个操作,对Hopping Clarity进行了更新您是否也有发布到Page2操作的视图示例代码?您是否可以发布视图,那里还有其他错误!稍等一下,换个名字来保护无辜等等,这个观点会立即发布,这解决了我的问题,我感谢你的帮助。