【问题标题】:ASP.NET MVC. How render a Partial with no model (like create view)ASP.NET MVC。如何在没有模型的情况下渲染 Partial(如创建视图)
【发布时间】:2018-08-30 21:47:10
【问题描述】:

我想像这样渲染局部:

@Html.Partial("_MyPartial")

但是我的部分确实需要一个类型化的对象,例如:MyPartial.cshtml:

@model MyApplication.Models.MyClass
(...)

但我想在我的视图上渲染它没有初始化模型,比如“创建”视图。

创建视图绑定到模型,但初始化为空。

我已经尝试过的:

@Html.Partial("_MyPartial") 主视图模型被传递给部分,它抛出一个不兼容的类型错误。

@Html.Partial("_MyPartial", null) 抛出同样的错误。

@Html.Partial("_MyPartial", new MyClass()) 使用默认值初始化视图。我不想要预初始化的视图。

在“创建”视图中,没有模型传递给视图,但视图绑定到模型。我想在“创建”视图中呈现这个部分。它不能绑定到已初始化的模型实例。它必须初始化为空。

【问题讨论】:

  • “我不想要预初始化的视图”——你到底是什么意思?如果您想要的不是默认构造函数提供的东西,请使用对象初始化器。
  • 他不希望输入框中的默认值,例如 0 在其模型的 int 属性的输入中,类似于创建控制器中的 return View();return View(model);行动。
  • 听起来您可能在滥用 mvc 模式。你有用例吗?您可以从那里获得没有模型和子类的基本视图,但是,您不能将视图绑定到模型然后不传递该视图。
  • 我用于补充“创建”视图。其中一些部分是由 ajax 动态添加的。
  • 这是一个相关问题。我也想这样做。你想通了吗? @丹尼尔桑托斯

标签: c# asp.net asp.net-mvc partial


【解决方案1】:

事实上,这是不可能的,因为partial从主视图中获取模型,如果自身没有模型。

在这种情况下,您必须初始化调用部分并且不仅将模型作为null 传递,而且必须清除上下文中的整个数据。

【讨论】:

    【解决方案2】:

    您已经编写了代码来接受视图中的模型类型:

    @model MyApplication.Models.MyClass
    

    所以你必须在视图中传递模型。

    如果您不想使用模型,请删除接受模型的代码

    【讨论】:

    • 您的评论不适用于“创建”视图,其中没有模型传递给视图,但视图绑定到模型。我想在“创建”视图中呈现这个部分。它不能绑定到已初始化的模型实例。它必须初始化为空。
    【解决方案3】:

    尝试使用 html.renderaction 而不是做部分 like this 并且不要为视图声明任何模型,如果它真的不首先使用一个?

    哦,是的,在操作返回中返回部分视图,不要忘记@符号后的花括号,这很重要

    【讨论】:

      【解决方案4】:

      当您想要返回没有模型的局部视图时。使用这个。

      @{ Html.RenderPartial("Your partial view") }
      

      【讨论】:

      • 请编辑更多信息。不建议使用纯代码和“试试这个”的答案,因为它们不包含可搜索的内容,也没有解释为什么有人应该“试试这个”。
      猜你喜欢
      • 2016-01-30
      • 2018-05-14
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多