正确的方法,以避免在Action中呈现视图

时间:2011-05-17 01:13:36

标签: c# asp.net-mvc asp.net-mvc-3 razor

我目前使用ajax帖子回到一个动作来创建一个新的数据库对象,然后返回渲染的html以获取该对象的视图。然后我将html注入页面。

我很想知道,因为如果有更好(或更正确)的方法来解决问题,MVC很容易让你从控制器内部呈现HTML视图。

(我目前使用this code将视图渲染为动作中的html。

赞赏任何和所有想法。

3 个答案:

答案 0 :(得分:4)

事实上有。只需返回部分视图。

public ActionResult AjaxStuff()
{
    // do whatever
    var model = ...;
    return PartialView(model);
}

答案 1 :(得分:2)

你可以使用PartialView渲染它或通过JSON自定义它(PartialView非常简单!)。

这实际上取决于您的实施和有关优雅降级的选择。

我通常做的是:

[HttpGet]
public ActionResult SignIn()
{
    //Check if it is an AJAX request
    if (Request.IsAjaxRequest())
        return PartialView();
    else
         return View();
}

所以有可能得到你的蛋糕并吃它。

说实话,有多种方法可以从服务器获取此视图。您可以使用asp.net mvc ajax js库,使用.getJSON或.ajax,甚至可以使用.load执行它:http://api.jquery.com/load/

答案 2 :(得分:0)

您可以像建议的其他答案一样呈现部分视图,或者返回JsonResult并从JSON数据填充HTML。你的电话。