Asp.net mvc 4 客户端验证中断@Html.DisplayFor和内容隐藏/显示

Asp.net mvc 4 客户端验证中断@Html.DisplayFor和内容隐藏/显示,asp.net-mvc-4,Asp.net Mvc 4,我有一个find officer控件,该控件回发以从AD获取官员信息。当信息返回时,我取消隐藏包含该信息的div。在我提交表单并通过客户端验证之前,一切正常。我遇到以下问题 当我提交表单进行客户端验证时,@html.DisplayFor助手方法不包含任何信息。@Html.HiddenFor确实包含所有正确的信息 同时,我的隐藏和显示不再有效 有没有办法让@html.DisplayFor正常工作?拥有一个只读文本框是不够的,因为我只需要纯文本 有更好的隐藏/显示方式吗。我所拥有的代码非常令人震

我有一个find officer控件,该控件回发以从AD获取官员信息。当信息返回时,我取消隐藏包含该信息的div。在我提交表单并通过客户端验证之前,一切正常。我遇到以下问题

  • 当我提交表单进行客户端验证时,
    @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);
            }
        }
    }