Asp.net mvc 4 客户端验证中断@Html.DisplayFor和内容隐藏/显示
我有一个find officer控件,该控件回发以从AD获取官员信息。当信息返回时,我取消隐藏包含该信息的div。在我提交表单并通过客户端验证之前,一切正常。我遇到以下问题Asp.net mvc 4 客户端验证中断@Html.DisplayFor和内容隐藏/显示,asp.net-mvc-4,Asp.net Mvc 4,我有一个find officer控件,该控件回发以从AD获取官员信息。当信息返回时,我取消隐藏包含该信息的div。在我提交表单并通过客户端验证之前,一切正常。我遇到以下问题 当我提交表单进行客户端验证时,@html.DisplayFor助手方法不包含任何信息。@Html.HiddenFor确实包含所有正确的信息 同时,我的隐藏和显示不再有效 有没有办法让@html.DisplayFor正常工作?拥有一个只读文本框是不够的,因为我只需要纯文本 有更好的隐藏/显示方式吗。我所拥有的代码非常令人震
- 当我提交表单进行客户端验证时,
助手方法不包含任何信息。@html.DisplayFor
确实包含所有正确的信息@Html.HiddenFor
- 同时,我的隐藏和显示不再有效
@html.DisplayFor
正常工作?拥有一个只读文本框是不够的,因为我只需要纯文本
有更好的隐藏/显示方式吗。我所拥有的代码非常令人震惊,我确信有更好的方法可以在回发和客户端验证上工作
<div class="row-fluid">
<div class="span3">
@Html.LabelFor(model => model.RequestingPayroll)
</div>
<div class="span4">
<div class="input-append">
@Html.TextBoxFor(model => model.RequestingPayroll, new { @class = "span6", placeholder = "payroll" })
<button type="submit" id="btnSubmit" name="Command" value="FindOfficer" class="btn cancel">Find Officer</button>
</div>
@Html.ValidationMessageFor(model => model.RequestingPayroll)
</div><!--/span-->
</div>
@if (Model != null)
{
if (Model.RequestingFirstName != "" && Model.RequestingFirstName != null)
{
ViewBag.RequestingPayroll = "";
}
else
{
ViewBag.RequestingPayroll = "hide";
}
}
else
{
ViewBag.RequestingPayroll = "hide";
}
<div id="requesting-payroll" class="row-fluid row-form @ViewBag.RequestingPayroll">
<div class="offset3 span9">
<div class="alert alert-info">
<strong><span class="capitalise">@Html.DisplayTextFor(model => model.RequestingLastName)</span>, @Html.DisplayTextFor(model => model.RequestingFirstName) (@Html.DisplayTextFor(model => model.RequestingRank))</strong><br />
@Html.DisplayTextFor(model => model.RequestingStationUnit) <br />
<strong>phone:</strong> @Html.DisplayTextFor(model => model.RequestingPhone), <strong>mobile:</strong> @Html.DisplayTextFor(model => model.RequestingMobile)
@Html.HiddenFor(model => model.RequestingLastName)
@Html.HiddenFor(model => model.RequestingFirstName)
@Html.HiddenFor(model => model.RequestingRank)
@Html.HiddenFor(model => model.RequestingStationUnit)
@Html.HiddenFor(model => model.RequestingPhone)
@Html.HiddenFor(model => model.RequestingMobile)
</div>
</div>
</div>
在我看来,在控制器上进行验证时,您没有将完整模型传递回视图。确保您正在填充并发回模型。数据似乎正在被传回。在提交表单进行客户端验证之前,所有内容都会正确显示。我已经禁止了对find officer控件的验证。我已经修改了我的帖子,加入了控制器代码,如果你在控制器上设置断点,请求对象是否在返回视图之前填充?是的。我测试了模型,当返回到视图时,所有的设置都是正确的
[HttpPost]
public ActionResult Index(DPACS.Models.Request request, string Command)
{
if (Command == "FindOfficer")
{
QpsUser user = CommonMethods.FindQpsUser(request.RequestingPayroll.ToString());
if (user != null)
{
ModelState.Clear();
request.RequestingRank = user.Rank;
request.RequestingFirstName = user.FirstName;
request.RequestingLastName = user.LastName;
request.RequestingPhone = user.PhoneNumber;
request.RequestingMobile = user.MobileNumber;
request.RequestingStationUnit = user.Station;
return View(request);
}
}
}