So, we can return a partial view from a controller like this:
所以,我们可以从控制器返回一个局部视图,如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication1.Models;
namespace MvcApplication1.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
return View();
}
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
public PartialViewResult Address()
{
Address a = new Address { Line1 = "111 First Ave N.", Line2 = "APT 222", City = "Miami", State = "FL", Zip = "33133" };
return PartialView(@"~/Views/Home/_Address.cshtml", a);
}
}
}
But, how am I supposed to use the returned partial view? I created _Address.cshtml under Views/Home, like this:
但是,我应该如何使用返回的局部视图?我在Views / Home下创建了_Address.cshtml,如下所示:
@model MvcApplication1.Models.Address
<p>
This is a partial view of address.
</p>
<p>
@Model.City
</p>
And, at the end of Views/Home/Contact.cshtml, I added this line:
并且,在Views / Home / Contact.cshtml的末尾,我添加了这一行:
@Html.Partial(@"~/Views/Home/_Address.cshtml")
And I expect to see the City of my address, but it doesn't show up. I am confused.
我希望看到我的地址城市,但它没有出现。我很迷惑。
2 个解决方案
#1
5
When the partial takes a different model than the method you're including it in you need to use the overload that takes a model parameter and supply the model for the view. By default it uses the same model as the including view. Typically you only need the path if it's in a different, non-shared folder. If it's in the same controller's folder, using just the name should do the trick.
当partial采用与你所包含的方法不同的模型时,需要使用带有模型参数的重载并为视图提供模型。默认情况下,它使用与包含视图相同的模型。通常,只有路径位于不同的非共享文件夹中时才需要路径。如果它在同一个控制器的文件夹中,只使用名称就可以了。
@Html.Partial("_Address", Model.Address)
On the other hand, if you're asking how do I get the partial view from an action included in my page, then you want to use the Action
method instead of the Partial
method.
另一方面,如果您问我如何从我的页面中包含的操作中获取局部视图,那么您希望使用Action方法而不是Partial方法。
@Html.Action("Address")
EDIT
To make the partial work you need to pass a Contact
model to the contact view.
要进行部分工作,您需要将Contact模型传递给联系人视图。
public ActionResult Contact()
{
var contact = new Contact
{
Address = new Address
{
Line1 = "111 First Ave N.",
Line2 = "APT 222",
City = "Miami",
State = "FL",
Zip = "33133"
}
}
return View(contact);
}
#2
1
demo for you:
为您演示:
public ActionResult Update(Demo model)
{
var item = db.Items.Where(item => item.Number == model.Number).First();
if (item.Type=="EXPENSIVE")
{
return PartialView("name Partial", someViewModel);
}
}
#1
5
When the partial takes a different model than the method you're including it in you need to use the overload that takes a model parameter and supply the model for the view. By default it uses the same model as the including view. Typically you only need the path if it's in a different, non-shared folder. If it's in the same controller's folder, using just the name should do the trick.
当partial采用与你所包含的方法不同的模型时,需要使用带有模型参数的重载并为视图提供模型。默认情况下,它使用与包含视图相同的模型。通常,只有路径位于不同的非共享文件夹中时才需要路径。如果它在同一个控制器的文件夹中,只使用名称就可以了。
@Html.Partial("_Address", Model.Address)
On the other hand, if you're asking how do I get the partial view from an action included in my page, then you want to use the Action
method instead of the Partial
method.
另一方面,如果您问我如何从我的页面中包含的操作中获取局部视图,那么您希望使用Action方法而不是Partial方法。
@Html.Action("Address")
EDIT
To make the partial work you need to pass a Contact
model to the contact view.
要进行部分工作,您需要将Contact模型传递给联系人视图。
public ActionResult Contact()
{
var contact = new Contact
{
Address = new Address
{
Line1 = "111 First Ave N.",
Line2 = "APT 222",
City = "Miami",
State = "FL",
Zip = "33133"
}
}
return View(contact);
}
#2
1
demo for you:
为您演示:
public ActionResult Update(Demo model)
{
var item = db.Items.Where(item => item.Number == model.Number).First();
if (item.Type=="EXPENSIVE")
{
return PartialView("name Partial", someViewModel);
}
}