改变控制器的操作

时间:2013-08-27 14:26:33

标签: asp.net-mvc-4

我的默认操作代码:

      public ViewResult Act(int? id)
       {
        if (id == null)
            ViewData["p"] = GetDefaultView();
        else
            ViewData["p"] = GetEditView((int)id);   

        return View("Index");
       }

我的索引视图代码:

      <!DOCTYPE html><html><head></head><body>
      <div id="content">@Html.Raw(ViewData["p"])</div></body></html>

如何使用字符串代替ViewData?我如何才能通过$ .ajax更新#content?

2 个答案:

答案 0 :(得分:1)

如果要返回字符串,可以更改控制器以返回ContentResult

public ContentResult Act(int? id)
    {
        string html = "";
        if (id == null)
            html = GetDefaultView();
        else
            html = GetEditView((int)id);

        var content = new ContentResult();
        content.Content = html;
        return content;
    }

答案 1 :(得分:1)

在能够使用$ .ajax函数之前,首先需要渲染一个包含jquery.js脚本的视图:

<!DOCTYPE html>
@{ Layout = null; }
<html>
<head>
</head>
<body>
    <div id="content"></div>

    <!-- TODO: Adjust your proper jquery version here: -->
    <script type="text/javascript" src="~/scripts/jquery.js"></script>
    <script type="text/javascript">
        $.ajax({
            url: '@Url.Action("act")',
            data: { id: 123 },
            success: function(result) {
                $('#content').html(result);
            }
        });
    </script>
</body>
</html>

然后你应该调整你的Act控制器动作,以便它返回一些局部视图或内容结果:

public ActionResult Act(int? id)
{
    if (id == null)
    {
        return Content("<div>id was null</div>");
    }

    return Content("<div>id value is " + id.Value.ToString() + "</div>");
}