我想要实现的目标
我陷入了第三步。如何使用模型对象在剃刀视图上显示数据
P.S。我可以从我的ajax代码
获得“建筑物编号:1”的警报JS
$('input[name=PerAddress]').on('change', function () {
if ($('input[name=PerAddress]:checked', '.form-group').val() == 'true') {
$.ajax({
url: "CAD",
type: 'GET',
dataType: 'json',
success: function (data) {
alert(data.PresentAddress1);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
}
});
控制器操作方法:
[HttpGet]
[ActionName("CAD")]
public JsonResult CustomerAddress()
{
var model = new AccountOpeningComplete
{
PresentAddress1 = "Building No : 1", // To be later retrieve from database
PresentAddress2 = "Mumbai", // To be later retrieve from database
PresentPostalCode = "497989", // To be later retrieve from database
CityList = new SelectList(DataAccess.DAL.DropDownValues("City"), "Value", "Text"),
ProvinceList = new SelectList(DataAccess.DAL.DropDownValues("Province"), "Value", "Text"),
CountryList = new SelectList(DataAccess.DAL.DropDownValues("Country"), "Value", "Text")
};
return Json(model, JsonRequestBehavior.AllowGet);
}
Razor View
@Html.LabelFor(m => m.PresentAddress1, new { @class = "col-xs-6 col-md-3 control-label" })
<div class="col-xs-6 col-md-9">
@Html.TextBoxFor(m => m.PresentAddress1, new { @class = "form-control" })
</div>
答案 0 :(得分:1)
根据您的代码,如果您能够正确获得响应,则成功时的数据对象是javascript对象,因为您在ajax调用中将json作为数据类型。
现在,因为你只是从你的asp.net mvc控制器返回json,你需要将这些新的返回值绑定到你的剃刀视图中的控件/元素,即html。
因此。如果是PresentAddress1文本框,则需要在成功块中添加此代码:
success: function (data) {
$("#PresentAddress1").val(data.PresentAddress1);
}
您必须从数据javascript对象中获取值并在各自的控件中设置它们。 您的其他选择是:
1)返回带有新数据的局部视图,以便像上面那样单独控制设置值。因此,您需要为html支持设置数据类型,并将视图替换为数据。示例如下:
$.ajax({
url: "CAD",
type: 'GET',
dataType: 'html',
success: function (data) {
$('#shell').html(data); //where shell is the id of the container that you want to update with the response from your controller.
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown);
}
});
2)使用双向数据绑定库,如knockoutjs,您可以在其中请求JSON数据并直接与视图中的控件绑定。 <强>推荐强>
答案 1 :(得分:0)
您有两种选择:
在现有视图中使用jQuery将JSON数据加载到预先存在的div中:
$("#PresentAddress).val(data.PresentAddress1);
你有<div class="col-xs-6 col-md-9" id="PresentAddress"></div>
从控制器调用部分视图。这将返回一个HTML格式的字符串到您的AJAX调用,然后您可以将其分配给空div。
$("#AllContent).html(returnedValue);