0

我的默认操作代码:

      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?

4

2 回答 2

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>");
}
于 2013-08-27T15:25:14.540 回答
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;
    }
于 2013-08-27T14:44:53.610 回答