通过PartialView方法返回视图

Sia*_*dos 12 c# asp.net-mvc

我想使用Ajax来防止刷新我的网页,并为了这个,我想返回 查看PartialView从法控制器上的ajax调用.

问题是:

  1. 返回Viewas 是好方法PartialView吗?
  2. 我该如何设置PartialView方法中的视图路径Controller

例如,对于在_index视图查看/ BasicInfo/_index路径,我尝试 PartialView("~/Views/BasicInfo/_Index");, PartialView("~/Views/BasicInfo/_Index.chtml");,PartialView("BasicInfo/_Index"); ,并得到误差找不到视图

编辑

如何将视图名称指定为PartialView方法,如果视图位于共享文件夹之外的文件夹中并且超出相关视图文件夹.例如,我的控制器名称是controller1,我的View在此路径中是Views/BasicInfo/_Index

Sil*_*mor 5

你应该有这个

  • myController的

    • ActionResult - >索引
    • ActionResult - > IndexPartial
  • 查看

    • 我的
      • Index.cshtml(查看)
      • IndexPartial.cshtml(PartialView)

哪里:

Index.cshtml作为完整视图将呈现带有传递模型的局部视图(为什么这样?以防止代码重复)

@model YourModelType
@{
    ViewBag.Title = "View Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@Html.Partial("IndexPartial", Model)
Run Code Online (Sandbox Code Playgroud)

IndexPartial.cshtml是局部视图,类似于

@model YourModelType

<h2>Some Title</h2>
 <div>
<h4>YourModel</h4>
<hr />
<dl class="dl-horizontal">
    <dt>
        @Html.DisplayNameFor(model => model.Property1)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Property1)
    </dd>

    <dt>
        @Html.DisplayNameFor(model => model.Property2)
    </dt>

    <dd>
        @Html.DisplayFor(model => model.Property2)
    </dd>
</dl>
Run Code Online (Sandbox Code Playgroud)

现在,当你想要完整的View使用MyController/Index时,如果你想要部分视图,你可以使用MyController/IndexPartial获取它

或者您可以在操作上使用参数来指定输出:

public ActionResult GetMyView(bool? partial)
        {
           var model  = something;
           if (partial != null && partial)
             { 
                return PartialView("MyViewPartial", model)
             }

            return View("MyView", model);
        }
Run Code Online (Sandbox Code Playgroud)

调用partial = yourHost/controller/GetMyView?partial = true

现在回到您的问题,是的,您可以将部分视图作为视图返回,反之亦然.但是你会在通过ajax(不完整或重载的html)将html附加到页面时遇到问题.


小智 5

您可以使用 :

public PartialViewResult ActionMethodName() 
{
      return PartialView("_Index.chtml");
}
Run Code Online (Sandbox Code Playgroud)

要么

public ActionResult ActionMethodName() 
{
      return PartialView("_Index.chtml");
}
Run Code Online (Sandbox Code Playgroud)


Men*_*gis 4

  1. 没有限制,也不被认为是不好的做法。

  2. 您的问题部分有错字PartialView("~/Views/BasicInfo/_Index.chtml")

    你应该写return PartialView("~/Views/BasicInfo/_Index.cshtml")