避免在 Action 中渲染视图的正确方法

发布于 2024-11-07 19:33:13 字数 340 浏览 0 评论 0原文

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

我想知道,由于 MVC 确实允许您轻松地从控制器内将视图渲染为 HTML,是否有更好(或更正确)的方法来解决该问题。

(我目前使用 此代码 在操作中将视图呈现为 html)。

任何和所有的想法表示赞赏。

I currently use an ajax post back to an action to create a new database object and then return the rendered html for a view of that object. I then inject that html into the page.

I was wondering, since MVC does easily allow you to render views to HTML from within controllers, if there was a better (or more correct) approach to the problem.

(I currently use this code to render the view as html in the action).

Any and all ideas appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南渊 2024-11-14 19:33:13

事实上是有的。只需返回部分视图即可。

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

As a matter of fact there is. Just return a partial view.

public ActionResult AjaxStuff()
{
    // do whatever
    var model = ...;
    return PartialView(model);
}
独享拥抱 2024-11-14 19:33:13

确实,您可以使用 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 通过 JQuery 执行此操作: http://api.jquery.com/load/

It's true you can render it using PartialView or doing it custom via JSON (PartialView is just so much easier!).

It really depends on your implementation and choices regarding graceful degradation.

What I usually do is:

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

So it is possible to get your cake and eat it too.

Truth be told there are various ways to get this view from the server. You could use the asp.net mvc ajax js library, use .getJSON or .ajax, or even do it via JQuery using .load: http://api.jquery.com/load/

说谎友 2024-11-14 19:33:13

您可以按照建议的其他答案呈现 PartialView 或返回 JsonResult 并从 JSON 数据填充 HTML。你的电话。

You can render a PartialView as the other answer suggested or return JsonResult and populate your HTML from the JSON data. Your call.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文