我正在使用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但它没有显示,所以当返回分支名称时,它无法找到控件,因此不会显示。 Textbox工作正常,但我不希望用户能够更改分支的名称。
最佳解决方案是什么?我应该只有一个span元素,然后只在这里显示分支名称吗?
答案 0 :(得分:0)
你可以使用强类型视图,任何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);
});