显示从DisplayFor中的Jquery调用获得的值,而不是TextBoxFor

时间:2012-06-28 08:33:18

标签: jquery asp.net-mvc-3

我有以下Jquery从对话框Box返回值并填写主页面中的值:

function AutoCompleteTopayer(pName, addLine, pCity, pState, pZip, pPhone) {
        $(".PayerName").html(pName);
        $("#txtPayerAddress").val(addLine);
        $("#txtPayerCity").val(pCity);
        $("#txtPayerState").val(pState);
        $("#txtPayerZip").val(pZip);
        $("#txtPayerPhone").val(pPhone);
        var csz = pCity + ", " + pState + ", " + pZip;
        $("#txtCStateZip").val(csz);
        $("#SearchPayDlg").dialog("close");
    }

我的观点中的代码:

    @Html.TextBoxFor(model => model.cityStateZip, new { @class = "fauxInput", id = "txtCStateZip" })
    @Html.HiddenFor(model => model.payerCityName, new { id = "txtPayerCity" })
    @Html.HiddenFor(model => model.payerStateCode, new { id = "txtPayerState" })
    @Html.HiddenFor(model => model.payerPostalZoneOrZipCode, new { id = "txtPayerZip" })

这给出了以下输出:
Output1

<小时/>
当我用DisplayFor替换TextBoxFor时...不显示值。我发现有一篇文章以某种方式解决了我的问题here,所以我想出了这个代码:

<span class="txtPayerName">
     @Html.DisplayFor(model => model.payerName, new { @class = "fauxInput" })
 </span>

并在JQuery方法中:

$(".txtPayerName").html(pName);

,但那也不起作用。任何解决方案?

<小时/> 后期编辑:对不起,我发现这是关于一个错字...最后一个确实有效..我已编辑并将在这里让它,所以其他人可能从中受益。

上面的代码只是说明了displayFor的类不起作用(感谢Darin Dimitrov),所以这应该有效:

 <span class="txtPayerName fauxInput">
         @Html.DisplayFor(model => model.payerName)
     </span> 

1 个答案:

答案 0 :(得分:1)

DisplayFor助手的第二个参数并不能完全符合你的想法(应用CSS类)。它允许您将其他ViewData传递给显示模板。

因此,您可以将CSS应用于包含元素

<span class="txtPayerName fauxInput">
    @Html.DisplayFor(model => model.payerName)
</span>

然后调整你的选择器:

$('.fauxInput').html(pName);

您的代码也有效,因为在您的选择器中使用了$(".txtPayerName"),但重要的是要指出,如果您使用此方法,则不会有fauxInput