Jquery 当Ajax请求查看时,将视图呈现为字符串

Jquery 当Ajax请求查看时,将视图呈现为字符串,jquery,asp.net-mvc,Jquery,Asp.net Mvc,我将视图呈现为路由请求,如/controller/action(例如/Page/Create),非常经典 我正在创建一个表单,其中视图将通过jQuery get()的AJAX请求加载,因此本质上我需要我的视图,或者更准确地说,我的控制器操作,以便在向呈现视图的路由发出AJAX请求时返回纯HTML字符串。我希望使用与普通请求相同的视图,因此我无法创建任何新视图 这类似于调用RenderPartial(“MyViewUserControl”),但从JS代码内部执行。您需要将HTML字符串移动到部分视

我将视图呈现为路由请求,如/controller/action(例如/Page/Create),非常经典

我正在创建一个表单,其中视图将通过jQuery get()的AJAX请求加载,因此本质上我需要我的视图,或者更准确地说,我的控制器操作,以便在向呈现视图的路由发出AJAX请求时返回纯HTML字符串。我希望使用与普通请求相同的视图,因此我无法创建任何新视图


这类似于调用RenderPartial(“MyViewUserControl”),但从JS代码内部执行。

您需要将HTML字符串移动到部分视图,然后在常规视图中包含部分视图(如果适用),并在操作中呈现部分视图

您可能希望在操作中使用
Request.IsAjaxRequest()
扩展方法


要获取Javascript中的HTML,您可以对操作的URL发出普通AJAX请求。

这里没有什么特别需要做的-只需像普通一样使用.get()请求您的操作方法,并将响应类型设置为“HTML”

$.get(“”,{},
功能(数据){
警报(“数据加载:”+数据);
},
“html”)

我的答案基于SLAks回复-我将此存档以供以后参考或帮助他人

这是我的结构:

1) Create.aspx(ViewPage)使用RenderPartial(“Tab CreateEditForm”)来呈现创建/编辑表单,即 2) Tab-CreateEditForm.ascx(部分) 3) 创建检测发出何种请求的操作。如果我们发出AJAX请求,我们可能不希望呈现Create.aspx,这是默认设置,而是呈现选项卡CreateEditForm,因为它只包含表单标记和字段,没有页面指令、标题、标题和Create.aspx中的所有其他元素

因此,动作如下所示:

    //
    // GET: /Tab/Create/{tabGroupSlug}
    [CanReturnModalView]
    [Authorize(Roles = "Administrators")]
    public ActionResult Create(string tabGroupSlug)
    {
        Tab tab = new Tab();
        if (Request.IsAjaxRequest())
            return View("Tab-CreateEditForm", tab); // returns partial

        return View(tab); // returns Create.aspx 
    }
这是我的编辑操作,它也使用相同的技术,因为编辑视图(Edit.aspx页面)也使用相同的编辑部分控件

    //
    // GET: /Tab/Edit/{slug}
    [CanReturnModalView]
    [Authorize(Roles = "Administrators")]
    public ActionResult Edit(string slug)
    {
        Tab editing = (Tab) _repository.GetInstance(slug);
        if (Request.IsAjaxRequest())
            return View("Tab-CreateEditForm", editing); // returns partial

        return View(editing); // returns Edit.aspx
    }

如果我的视图包含所有表单代码,这是正确的,但事实上我的表单在ASCX中。就像SLaks说的。。
    //
    // GET: /Tab/Edit/{slug}
    [CanReturnModalView]
    [Authorize(Roles = "Administrators")]
    public ActionResult Edit(string slug)
    {
        Tab editing = (Tab) _repository.GetInstance(slug);
        if (Request.IsAjaxRequest())
            return View("Tab-CreateEditForm", editing); // returns partial

        return View(editing); // returns Edit.aspx
    }