- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从 ajax 调用 MVC Controller 。 Controller 应该返回一个名为 Counter 的 ViewBag 属性:
public ActionResult GetSomething()
{
var someModel = ...
ViewBag.Counter = 5;
return PartialView("SomePartialView", someModel);
}
我通过ajax调用 Controller 。我想要的是访问 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:无法从 Controller 返回模型中的计数器。必须位于 ViewBag 中。
更新:
用返回值更新了 Controller ,让您知道我无法以 Json 形式返回计数器。
解决方案:
我最终像这样重写了我的 Controller :
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);
}
最佳答案
这是不可能的,因为数据参数只是一个 HTML 字符串,它是在执行 PartialView("SomePartialView", someModel)
其中一个选项如下:
在 Controller 操作中添加 Response.Headers["Counter"] = 5
在 ajax.success 中,接受两个额外参数 status
和 xhr
,以便您的 success 函数如下所示:
成功:函数(数据、状态、xhr){
在此之后,您可以使用 xhr.getResponseHeader("Counter")
这将为您提供 5
(或您选择传入的任何内容)
关于asp.net - 我可以将 ViewBag 属性返回给 Ajax 成功回调吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37460852/
我需要将一些信息传递给部分 cshtml View 。为此,我使用了 ViewDataDictionary 和 ViewBag。 public ActionResult TaskPage(int ID
我有 RedirectToAction 作为 Controller 中的返回值,在我看来我使用 ViewBag。虽然在 RedirectToAction 之后 ViewBag 变空是一个众所周知的问题
我已经为 HtmlHelper 编写了扩展方法,该方法是从需要访问 ViewBag 以获取页面设置的信息的母版页调用的。 这是方法签名: public static string BuildFavor
我正在尝试在我的应用程序中使用 ViewBag,我拥有所有最近的 dll、最新版本的 MVC 3,但我仍然收到错误: "The name 'ViewBag' does not exist in the
我正在尝试通过 JavaScript 将 ViewBag 中的值插入到输入中并动态创建该值。 我调用 Controller 创建的employeeID的值 public string GetEmplo
我需要显示存储在 ViewBag 中的日期,为此我需要使用 DisplayTemplate。现在,如果它是模型中的日期,我会使用 DisplayFor 助手,但我该如何为 ViewBag 做呢? 我有
我知道网上已经有一些解决方案,但在尝试了所有解决方案后,我对自己感到困惑。 我只想澄清我尝试过的解决方案: 确保 Microsoft.AspNet.Web.Optimization 或 System.
在MSDN documentation ,有 ViewBag.MyMessageToUsers 和 ViewBag.AnswerText。在ASP.net/mvc tutorial , 有 ViewB
这个问题在这里已经有了答案: Can the ViewBag name be the same as the Model property name in a DropDownList? (2 个答
我测试了我的应用程序,在测试时我发现了一个错误,我认为它来自 ViewBage。我有 500 名医生和专科医生的名单,当我想编辑电话、地址等时,下拉菜单会显示列表中第一个专科医生的名字,所以它不会保存
我有一个在数据库中注册聊天的表单,一切正常,问题是 ViewBag,因为这会将消息带到 View 中的 Javascript,以便它可以进行验证。当用户注册时,应该会出现一条成功消息,但在 ViewB
有没有办法清除ViewBag? ViewBag 没有 setter,因此不能简单地取消它: ViewBag = null; 我似乎也不能use reflection迭代它并清除它的动态属性,因为您不能
想象一个名为的 View 包 ViewBag.Modes 这包含以下内容: Simple Advanced Manual Complete 如何像在数组中那样通过索引访问 viewbag? 例如 S
是否可以在调用重定向之前设置 ViewBag? 我想要这样的东西: @ViewBag.Message="MyMessage"; RedirectToAction("MyAction"); 最佳答案 当
我正在做一个项目,我只需要从两个表中获取数据,我想使用 LINQ Query 来获取数据。 在我的 Controller 中: var Parameters = (from test in _db.t
与'12 asp.net C# MVC4 - Int.Appl.Template EF Code First 这是我非常简单的脚本 $('#Add').click(function (e)
这是我的 Controller 代码: const string template = "clm_adj_process_cd ('@[CdCode]',varchar) ~f.src_dm_plat
我在 MVC3 项目中有一个 View ,在加载时我将一个实体设置到 ViewBag 中。 实体的属性之一是 Datetime? 类型。 在 $(document).ready我将 ViewBag 中
我尝试将 ViewBag.OrderId 设置为数据属性 data-orderId 的值,但在 =Add } JS: $(".btn-add-note").click(function(){
我需要显示存储在 ViewBag 中的日期,并且我需要使用 DisplayTemplate 来实现此目的。现在,如果它是模型中的日期,我将使用 DisplayFor 助手,但我该如何为 ViewBag
我是一名优秀的程序员,十分优秀!