c# – 如何在剃刀视图中将@model指令更改为其他模型?
发布时间:2020-12-15 07:56:19 所属栏目:百科 来源:网络整理
导读:我有一个控制器,它创建一个模型并调用一个视图将模型作为参数传递. 在View中有一个@model指令,用于指定Model的类型. 我想重用相同的View,但是从控制器传递不同的模型. 是否可以在View中动态(或有条件地)更改@model指令? 例如,在我的控制器操作中: var cont
我有一个控制器,它创建一个模型并调用一个视图将模型作为参数传递.
在View中有一个@model指令,用于指定Model的类型. 我想重用相同的View,但是从控制器传递不同的模型. 是否可以在View中动态(或有条件地)更改@model指令? 例如,在我的控制器操作中: var contactsModel = db.GetContacts(); var companiesModel = db.GetCompanies(); return (someCondition)? View(contactsModel):View(companiesModel); 那么如何在View指令中定义@model以满足两个模型? 谢谢. 更新: 谢谢,但我需要使用一个只有不同模型的常见视图. 这是可能的,这是如何做到的. 在视图中我定义: @model IEnumerable<MvcApplication1.Models.IBaseInterface> 在Model类中我定义: public interface IBaseInterface { } public class Contact: IBaseInterface {} public class Company: IBaseInterface {} 然后,在视图中我使用: @if (Model is List<Contact>) { @foreach (var item in (List<Contact>)Model) { // Here item has type Contact } } @if (Model is List<Company>) { @foreach (var item in (List<Company>)Model) { // Here item has type Company } } 完美的工作:) 解决方法
没有. 如果您需要传递不同的模型,这意味着您需要不同的视图: return (someCondition) ? View("Contacts",contactsModel) : View("Companies",companiesModel); ASP.NET MVC中的基本规则如下:每个视图的视图模型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |