【问题标题】:mvc ajax return partial view with model get the value of model in the successmvc ajax return partial view with model 成功获取模型的值
【发布时间】:2017-03-13 12:51:16
【问题描述】:

我有 ajax 可以返回具有强类型的部分视图 我想在成功中获得模型的价值。 可能吗? 代码返回:

return View("Test", Model);

在 ajax 中: 我想在数据变量中获取模型

 success: function (data) {
       data.
           }

【问题讨论】:

标签: ajax asp.net-mvc


【解决方案1】:

您的部分视图需要返回 JSON 数据,以便您能够访问这样的数据。

在你的控制器中(我假设这是一个 HTTPPost 调用):

return Json(new { id = 1, name = "Test" });

在你的 JS Ajax 调用中:

success: function(data) {
    alert(data.name); //alerts 'Test'
}

更新 好的,如果你想返回部分视图和模型,你可以返回你已经存在的视图,然后将模型转换为 JSON 字符串,以便在视图中的 JS 中访问和使用?这是一个粗略的例子......

在控制器中:

using System.Web.Script.Serialization;
...
var jsonstring = new JavaScriptSerializer().Serialize(Model); 
...
ViewBag.JsonString = jsonString;

然后在局部视图中:

@{
   var jsonString = ViewBag.JsonString;
}
<script>
var data = JSON.parse("@jsonString");
alert(data.name); //alerts 'Test'
</script>

【讨论】:

  • 嗨,谢谢,但我需要返回局部视图和模型,在您的示例中如何在局部视图中使用?
  • 部分视图顶部有@{ var jsonString = ViewBag.JsonString; }&lt;script&gt; 标签之前)
  • 我做到了,但我得到了错误,因为脚本在主视图中,它不知道部分,你知道吗?
  • 您需要将该脚本放入部分并从那里执行 JS。
【解决方案2】:

不,因为您需要从控制器操作中返回 JsonResult,如下所示:

return Json(new {response =  Model });

现在ajax成功了,你可以从返回的json对象中访问结果:

success: function (data) {
       console.log(data);
           }

【讨论】:

    【解决方案3】:

    试试这是 Ajax 表单

    OnSuccess = "ShowMessage()"
    

    脚本是

        <script>
        function ShowMessage() {
                    document.getElementById('info').value='YOUR_MESSAGE';
                    setTimeout(function () {
                    $("#info").hide();
                    }, 3000);
                }
        <script>
    

    你的Html标签应该是这样的

    <div id="info"></div>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 2011-04-24
      • 2012-11-22
      相关资源
      最近更新 更多