为什么 Viewbag 不显示在 asp.net mvc 视图页面中?
Why Viewbag not show in asp.net mvc view page?
我是 asp.net mvc 的初学者,编写此 java 脚本代码以从控制器获取任何数据:
$.ajax({
url: '@Url.Action("CallService", "MyScore")',
type: 'GET',
dataType: 'json',
cache: false,
data: {
'id': 29
},
success: function(color) {
//alert(color);
},
error: function() {
alert('Error occured');
}
});
并在控制器中写入此操作:
[HttpGet]
public ActionResult CallService(string id)
{
var idNum = Convert.ToInt32(id);
string color = idNum.ToString();
ViewBag.Myfamily = "razzaqi";
return Json(color, JsonRequestBehavior.AllowGet);
}
在视图页面中写入此代码:
<h1> Hello Dear @ViewBag.Myfamily</h1>
当我 运行 项目 <h1> Hello Dear @ViewBag.Myfamily</h1>
没有显示时,但我想显示这个输出:
Hello Dear razzaqi
您 return 正在 JSON 而不是 ViewBag
。您需要将 "razzaqi"
作为 JSON 对象的一部分发送到。设置 HTML 为
<h1> Hello Dear <span id='familyname'></span></h1>
将您的控制器修改为 return myfamily
作为 JSON 对象的一部分。
[HttpGet]
public ActionResult CallService(int id)
{
string color = id.ToString();
return Json(new {
color = color
myfamily = "razzaqi"
}, JsonRequestBehavior.AllowGet);
}
消耗结果
$.ajax({
url: '@Url.Action("CallService", "MyScore")',
type: 'GET',
dataType: 'json',
cache: false,
data: { 'id': 29 },
success: function (data) {
$('#familyname').text(data.myfamily)
},
error: function () {
alert('Error occured');
}
});
Viewbag 对象填充到视图中,服务器端在创建视图时。您的 ajax 调用联系服务器询问 Json 数据 在视图完成后 。
所以如果你这样做,你将对象传递到你的 viewbag 就太迟了...
但是有一些workarounds/solutions解决这个问题:
- 让 Controller return 中的变量 Json 是 returning。
- 获取所需数据的简单高效方式
- Html 帮手等。但是不会工作,有时你只需要那个可怕的 viewbag...
- 执行 ajax 调用时重新加载局部视图。
- 实施需要更多时间,您必须创建新的操作和局部视图。
- 当您希望在通话中更改更多内容并希望使用 html 助手等时很好
我是 asp.net mvc 的初学者,编写此 java 脚本代码以从控制器获取任何数据:
$.ajax({
url: '@Url.Action("CallService", "MyScore")',
type: 'GET',
dataType: 'json',
cache: false,
data: {
'id': 29
},
success: function(color) {
//alert(color);
},
error: function() {
alert('Error occured');
}
});
并在控制器中写入此操作:
[HttpGet]
public ActionResult CallService(string id)
{
var idNum = Convert.ToInt32(id);
string color = idNum.ToString();
ViewBag.Myfamily = "razzaqi";
return Json(color, JsonRequestBehavior.AllowGet);
}
在视图页面中写入此代码:
<h1> Hello Dear @ViewBag.Myfamily</h1>
当我 运行 项目 <h1> Hello Dear @ViewBag.Myfamily</h1>
没有显示时,但我想显示这个输出:
Hello Dear razzaqi
您 return 正在 JSON 而不是 ViewBag
。您需要将 "razzaqi"
作为 JSON 对象的一部分发送到。设置 HTML 为
<h1> Hello Dear <span id='familyname'></span></h1>
将您的控制器修改为 return myfamily
作为 JSON 对象的一部分。
[HttpGet]
public ActionResult CallService(int id)
{
string color = id.ToString();
return Json(new {
color = color
myfamily = "razzaqi"
}, JsonRequestBehavior.AllowGet);
}
消耗结果
$.ajax({
url: '@Url.Action("CallService", "MyScore")',
type: 'GET',
dataType: 'json',
cache: false,
data: { 'id': 29 },
success: function (data) {
$('#familyname').text(data.myfamily)
},
error: function () {
alert('Error occured');
}
});
Viewbag 对象填充到视图中,服务器端在创建视图时。您的 ajax 调用联系服务器询问 Json 数据 在视图完成后 。
所以如果你这样做,你将对象传递到你的 viewbag 就太迟了...
但是有一些workarounds/solutions解决这个问题:
- 让 Controller return 中的变量 Json 是 returning。
- 获取所需数据的简单高效方式
- Html 帮手等。但是不会工作,有时你只需要那个可怕的 viewbag...
- 执行 ajax 调用时重新加载局部视图。
- 实施需要更多时间,您必须创建新的操作和局部视图。
- 当您希望在通话中更改更多内容并希望使用 html 助手等时很好