c# – 如何在剃刀视图中将@model指令更改为其他模型?

c# – 如何在剃刀视图中将@model指令更改为其他模型?,第1张

概述我有一个控制器,它创建一个模型并调用一个视图将模型作为参数传递. 在View中有一个@model指令,用于指定Model的类型. 我想重用相同的View,但是从控制器传递不同的模型. 是否可以在View中动态(或有条件地)更改@model指令? 例如,在我的控制器 *** 作中: var contactsModel = db.GetContacts();var companiesModel = db.G 我有一个控制器,它创建一个模型并调用一个视图将模型作为参数传递.
在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 }}

完美的工作:)

解决方法

Is it possible to dynamically (or conditionally) change @model
directive in the VIEw?

没有.

如果您需要传递不同的模型,这意味着您需要不同的视图:

return (someCondition)     ? VIEw("Contacts",contactsModel)     : VIEw("CompanIEs",companIEsModel);\

ASP.NET MVC中的基本规则如下:每个视图的视图模型.

总结

以上是内存溢出为你收集整理的c# – 如何在剃刀视图中将@model指令更改为其他模型?全部内容,希望文章能够帮你解决c# – 如何在剃刀视图中将@model指令更改为其他模型?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1244998.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存