1

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

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" })

这给出了以下输出:
输出1



当我将 TextBoxFor 替换为 DisplayFor ...时,未显示这些值。我发现一篇文章以某种方式解决了我的问题所以我想出了这段代码:

<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> 
4

1 回答 1

1

帮助器的第二个参数DisplayFor根本不像你认为的那样做(应用 CSS 类)。它允许您将额外的 ViewData 传递给显示模板。

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

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

然后调整您的选择器:

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

您的代码也可以工作,因为在您使用的选择器中,$(".txtPayerName")但重要的是要指出,fauxInput如果您使用这种方法,将不会有任何代码。

于 2012-06-28T08:36:53.903 回答