【问题标题】:Form elements and logic within a partial view局部视图中的表单元素和逻辑
【发布时间】:2011-12-22 15:09:46
【问题描述】:

我的网站上有许多表格,所有表格都大相径庭。然而,会有一个元素被所有人共享 - 几个文本框和一个验证消息,具体取决于输入。

我正在使用 asp.net MVC3,并且为了代码重用,我想将此共享元素放入将包含在每个表单中的局部视图中。这个局部视图必须执行逻辑来检查输入并相应地显示验证消息。

是否有人对我如何做到这一点有任何指示?提前致谢。

【问题讨论】:

  • 我不会使用 PartialView,我宁愿使用 EditorTemplate/DisplayTemplate 作为子视图类。

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


【解决方案1】:

为你的公共视图创建一个 ViewModel 说

public class CommonViewModel
{
    public bool IsValid {get;set;}
    public string Message {get;set;}

}

现在说说其他的 ViewModel

public class MyOtherViewModel
{
    public  CommonViewModel CommonViewModel {get;set;}
    //Other Properties here


}

现在,您可以从 MyOtherView.cshtml 轻松渲染局部视图,从主视图传递值

@model MyOtherViewModel
@Html.Partial("commonView",Model.CommonViewModel)

我希望这可以帮助你开始。

干杯

【讨论】:

  • +1:我同意嵌套模型,但代替 PartialView,我认为最好定义一个自定义 EditorTemplate/DisplayTemplate。
  • 谢谢各位,但 EditorTemplate 在这种情况下会有什么不同。
  • 表面上很好 EditorTemplates 可能看起来就像部分视图,但这只是表面上,语义上模板是强大的并且可以被框架使用(例如,你只需放置一个 @EditorFor(Model) ) 并将所有工作留给模板。像往常一样,这取决于特定的场景(比如 IT 中 99.99% 的事情)。
  • 此处解释了 EditorTemplate 的另一个优点(或缺点)stackoverflow.com/questions/8610603/…(请参阅 Scott Ripley 的回答)
【解决方案2】:

我正在编写一个粗略的代码,请相应地更正。 使用部分视图并编写如下代码。

@Html.BeginForm('actionname',controller)
{
@Html.TextBox('abc')

}
然后在你的控制器中创建一个方法,比如
[发布]
公共 ActionResult ActionName()
{

}

将此部分视图放在您的任何页面中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-03
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多