asp.net – 我可以将ViewBag属性返回给Ajax成功回调吗?
发布时间:2020-12-16 06:39:53 所属栏目:asp.Net 来源:网络整理
导读:我从ajax调用MVC控制器.控制器应该返回一个名为Counter的ViewBag属性: public ActionResult GetSomething(){ var someModel = ... ViewBag.Counter = 5; return PartialView("SomePartialView",someModel);} 我通过ajax调用控制器.我想要的是在ajax成功回调
我从ajax调用MVC控制器.控制器应该返回一个名为Counter的ViewBag属性:
public ActionResult GetSomething() { var someModel = ... ViewBag.Counter = 5; return PartialView("SomePartialView",someModel); } 我通过ajax调用控制器.我想要的是在ajax成功回调中访问名为Counter的ViewBag属性.这可能吗? $.ajax({ type: "POST",url: "/GetSomething",content: "application/json; charset=utf-8",dataType: "json",success: function (data) { // How can I access Counter from here },}); PS:从控制器返回模型中的计数器不是一种选择.必须在ViewBag中. 更新: 用一个返回值更新了控制器,让你知道,我不能在Json中返回Counter. 解: 我最终重写了我的控制器,如下所示: public JsonResult GetHeaderBasketPreview() { var someModel = ... return Json(new { pViewHtml = HtmlHelpers.RenderViewToString(this.ControllerContext,"SomePartialView",someModel),counter = 5 }); } 它现在返回我的部分的html,加上我的计数器变量. RenderViewToString看起来像这样(我在stackoverflow的答案中找到了这个辅助方法 – 但是不记得在哪里): public static string RenderViewToString(ControllerContext context,string viewName,object model) { if (string.IsNullOrEmpty(viewName)) viewName = context.RouteData.GetRequiredString("action"); var viewData = new ViewDataDictionary(model); using (var sw = new StringWriter()) { var viewResult = ViewEngines.Engines.FindPartialView(context,viewName); var viewContext = new ViewContext(context,viewResult.View,viewData,new TempDataDictionary(),sw); viewResult.View.Render(viewContext,sw); return sw.GetStringBuilder().ToString(); } } 我现在可以在我的ajax成功回调中访问这两个变量: success: function (data,status,xhr) { $('#somePartialView').html(data.pViewHtml); $('#counterIndicator').html(data.counter); } 解决方法
这不可能,因为数据参数只是在执行PartialView时生成的HTML字符串(“SomePartialView”,someModel)
一种选择如下: 在您的控制器操作中添加Response.Headers [“Counter”] = 5 在你的ajax.success中,接受两个额外的参数status和xhr,这样你的success函数如下所示: 成功:功能(数据,状态,xhr){ 在此之后,您可以使用xhr.getResponseHeader(“Counter”),它将为您提供5(或您选择传入的任何内容) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – SignalR和浏览器连接限制
- asp.net – IE 8和客户端缓存
- asp.net – 如何在Linux服务器上安装mono?
- asp.net-mvc – 从asp.net POST动作方法更新nhibernate实体
- ASP.NET Core Identity获取用户id
- ASP.NET会话状态和多个工作进程
- 为什么我不能在我的代码asp.net c#中使用app_code中的代码文
- asp.net-mvc – 更新用户声明不起作用.为什么?
- asp.net – 估算Web应用程序峰值带宽需求的最准确方法是什么
- 如何在MVC_WebAPI项目中的APIController帮助页面添加Web测试
推荐文章
站长推荐
- .Net Core微服务入门全纪录(三)——Consul-服务
- asp.net – 错误:“无法读取配置部分’system.w
- asp.net-mvc – ASP.NET MVC:如何创建一个可用的
- ASP.NET MVC 3静态文件的简单场景授权
- macos – ASP.NET CORE 2.1预览“Csc”任务不支持
- asp.net-mvc – 如何从ASP MVC5中的属性路由获取
- 是否值得使用webform视图引擎将现有的asp.net-mv
- asp.net-mvc – 为什么ASP.Net MVC便携式区域不像
- asp.net-mvc – 如何更改ASP.NET MVC中的默认验证
- asp.net – 从div标签中引发回发事件
热点阅读