【发布时间】:2014-01-06 14:31:48
【问题描述】:
在一系列页面视图上的视图状态存在问题 - 在 Razor 中页面的初始视图中,我使用 Html.HiddenFor,如下所示:
@Html.HiddenFor(x => Model.err)
@Html.HiddenFor(x => Model.errField)
@Html.HiddenFor(x => Model.errMessage)
@Html.HiddenFor(x => Model.IsMove)
这似乎工作正常。我隐藏的输入标签包含正确的值。但是,当我提交表单 [HTTPPost] 并在我的控制器操作中更新模型时......
model.err = transHelper.err;
model.errField = transHelper.errField;
model.errMessage = transHelper.errMessage;
return View(model);
隐藏字段似乎没有更新,它们包含初始视图中的原始值。但是,当我在这样的同一剃刀视图中的另一个上下文中使用这些字段时......
@*
this seems to not update correctly...
@Html.HiddenFor(x => Model.err)
@Html.HiddenFor(x => Model.errField)
@Html.HiddenFor(x => Model.errMessage)
@Html.HiddenFor(x => Model.IsMove)
*@
<input type="hidden" id="err" value="@Model.err" />
<input type="hidden" id="errField" value="@Model.errField" />
<input type="hidden" id="errMessage" value="@Model.errMessage" />
<input type="hidden" id="IsMove" value="@Model.IsMove" />
</div>
然后输入字段正确更新。我什至创建了一个 View Helper 来帮助调试,并且在所有情况下,模型似乎在 HtmlHelper<TModel> 中都有正确的数据——我什至将模型返回为 return Json(model); 并且数据很好。
此时我正在处理工作,但有人知道为什么@Html.HiddenFor 很脏。
更新:这是我的控制器操作
[HttpPost]
public ActionResult Index(HomePageModel model)
{
// process transaction
Transactionr transr = new Transactionr();
transr.Process(model);
model.err = transr.err;
model.errField = transr.errField;
model.errMessage = transr.errMessage;
return View(model);
}
这是我的看法:
@model App.Models.HomePageModel
@{
ViewBag.Title = "Product Categorizer";
}
<form id="formData" method="post" action="/Home/Index">
@Html.AntiForgeryToken()
<fieldset>
<div>
@Html.HiddenFor(model => model.err)
@Html.HiddenFor(model => model.errField)
@Html.HiddenFor(model => model.errMessage)
@Html.HiddenFor(model => model.IsMove)
<input type="hidden" id="myerr" value="@Model.err" />
<input type="hidden" id="myerrField" value="@Model.errField" />
</div>
<div class="section group">
<div class="col span_2_of_2">
<div class="message" id ="message">
@if (Model.err < 0)
{
<span style="color: purple;">@Model.errMessage (@Model.err) - (@Model.errField)</span>
}
else if (Model.err > 0)
{
<span style="color:red;">@Model.errMessage (@Model.err) (@Model.errField)</span>
} else {
<span>@Model.errMessage (@Model.err) (@Model.errField)</span>
}
</div>
</div>
</div>
<div class="section group" id="workspace">
@Html.Partial("_WorkspacePartial", Model)
</div>
<div class="section group" id="details">
@Html.Partial("_DetailPartial", Model)
</div>
</fieldset>
</form>
这是我的模型:
public class HomePageModel
{
public int FromStore { get; set; }
// the "To" part of the copy/move transaction
public int ToStore { get; set; }
// a list of the copy/move transaction
public List<int> Details { get; set; }
// true is move false is copy
public bool IsMove { get; set; }
// current message
public int err { get; set; }
public int errField { get; set; }
public string errMessage { get; set; }
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor