【问题标题】:How to display text on the view after returning JSON data返回 JSON 数据后如何在视图上显示文本
【发布时间】:2013-04-19 13:58:13
【问题描述】:

我正在使用ASP.NET MVC 4 和最新版本的jQuery

我有一个用于输入分行号的文本框。在此文本框中输入分支编号并失去焦点后,我需要执行 AJAX 调用来检索分支名称。然后我需要在视图上显示这个分支名称,只是为了查看而不是编辑。

文本框的 HTML 标记和分支名称的“文本”:

<td class="edit-label">Branch Number: <span class="required">*</span></td>
<td>
    @Html.TextBoxFor(x => x.BranchNumber, new { maxlength = "6" })
    @Html.Display("BranchName", new { id = "BranchName" })
</td>

我的 jQuery 代码:

$('#BranchNumber').blur(function () {
    var url = '@Url.Action("GetBranchName")';
    var data = { branchNumber: $('#BranchNumber').val() };

    $.getJSON(url, data, function (data) {
        $('#BranchName').text(data);  // Need to have an element to populate the data
    });
});

我的操作方法调用一个服务来带回分支的名称:

public ActionResult GetBranchName(long branchNumber)
{
    Check.Argument.IsNotNegative(branchNumber, "branchNumber");

    string branchName = myService.GetBranchName(branchNumber);

    return Json(branchName, JsonRequestBehavior.AllowGet);
}

我的视图模型:

public class MyViewModel
{
    public long BranchNumber { get; set; }

    public long BranchName { get; set; }
}

当我返回分支名称时,我需要在视图上显示它。我不确定显示它的最佳方式是什么?我已经尝试过 LabelFor 和 DisplayFor 但它没有显示,所以当返回分支名称时它找不到控件所以它不显示。文本框工作正常,但我不希望用户能够更改分支的名称。

什么是最好的解决方案?我应该只有一个 span 元素,然后在这里显示分支名称吗?

【问题讨论】:

  • 您不能对 ajax 返回值使用任何 强类型 帮助器,因为您将无法绑定回 razor。所以跨度是最好的。
  • 我希望它具有强类型,以便在刷新表单时我需要它来保留分支名称。
  • 但是强类型是什么?你不会从 ajax 绑定回你的模型...

标签: jquery asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4


【解决方案1】:

您可以使用强类型视图、任何 html 元素,并且仍然允许模型绑定器完成它的工作。

// your view
// using div as an example
<div id="@("Branch"+Model.BranchName)">@Model.BranchName</div>
//
// in your js do this
$.getJSON(url, data, function (data) {
    $('#Branch'+@Model.BranchName).text(data);
});

【讨论】:

    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    相关资源
    最近更新 更多