Razor视图中的多个视图模型
本文关键字:视图 模型 Razor | 更新日期: 2023-09-27 18:15:11
用剃刀视图处理多个模型的最佳方式是什么?
我有两个模型,都很相似,但是一个模型需要Postcode字段,而另一个模型不需要
public class IrelandPostcodeLookupViewModel , IWithProgress
{
readonly Progress _Progress = new Progress(Step.Delivery);
public Progress Progress
{
get { return _Progress; }
}
[Required(ErrorMessage = "Please enter your house number or name")]
[DisplayName("House number or name")]
public string HouseNumber { get; set; }
[StringLengthWithGenericMessage(50)]
[DisplayName("Eircode")]
public string Postcode { get; set; }
}
public class PostcodeLookupViewModel , IWithProgress
{
readonly Progress _Progress = new Progress(Step.Delivery);
public Progress Progress
{
get { return _Progress; }
}
[Required(ErrorMessage = "Please enter your house number or name")]
[DisplayName("House number or name")]
public string HouseNumber { get; set; }
[StringLengthWithGenericMessage(50)]
[Required(ErrorMessage = "Please enter your postcode")]
[DisplayName("PostCode")]
public string Postcode { get; set; }
}
在控制器中,我想根据传入的国家使用特定的视图模型。就像
public virtual ActionResult PostcodeLookup(string country)
{
if (country == Country.UnitedKingdom)
return View(new PostcodeLookupViewModel());
else
return View(new IrelandPostcodeLookupViewModel());
}
我用
在视图中处理这个@model dynamic
问题是我的视图包含了部分视图
@Html.Partial("~/Views/Shared/_Progress.cshtml", Model.Progress)
和我遇到错误'HtmlHelper'没有适用的方法命名为'Partial',但似乎有一个扩展方法的名称。无法动态分派扩展方法'
谁能告诉我如何处理部分视图?
谢谢
因为Model
是dynamic
,所以Model.Progress
也产生了dynamic
。
这对于dynamic
对象上的所有属性和函数调用都是正确的,无论你做得有多深。
要解决这个问题,可以对Model.Progress
对象进行类型转换:
@Html.Partial("~/Views/Shared/_Progress.cshtml", (Progress)Model.Progress)