【问题标题】:MVC 5 model inside model back to controller模型内部的 MVC 5 模型返回到控制器
【发布时间】:2014-05-20 02:56:42
【问题描述】:

我有一个模型,里面有两个模型:

public class ASayfa
    {
        public UArama u = new UArama();
        public HArama h = new HArama();
    }

Asayfa里面的类如下:

 public class UArama
    {
        public string ad { get; set; }
        public bool varmi { get; set; }
    }
public class HArama
        {
            public string hazir { get; set; }
            public bool varmi { get; set; }
        }

在我看来:

 @using (Html.BeginForm("uArama", "Home"))
    {
@Html.TextBoxFor(m => m.u.ad, new { @class = "suggestBox ui-autocomplete-input", id = "ad", autocomplete = "off" })

   <input type="submit" value=@Resources.UAramaTus class="search-btn" onclick="">
}

当我提交表单时,模型是空的。在我只有 UArama 课程并且它正在工作之前,但是当我将它更改为 Asayfa 课程时,它开始空着回来。 我怎样才能使这项工作?我需要在一个视图中使用两个模型,因为会有一个带有自己提交的辅助 hml.beginform。

【问题讨论】:

    标签: razor model controller asp.net-mvc-5


    【解决方案1】:

    我找到了解决方案。 在主类中:

    public class ASayfa
        {
            public UArama u = new UArama();
            public HArama h = new HArama();
        }
    

    改成:

    public class ASayfa
            {
                public UArama u {get; set;}
                public HArama h {get; set;}
            }
    

    成功了

    【讨论】:

    • 正是我所需要的。谢谢!
    【解决方案2】:

    一种解决方案是为每个子类型UArama uHArama h 创建一个EditorTemplate

    编辑器模板是一个 .cshtml(或 .aspx)文件,用于处理特定类型的任何模型实例。

    按照 ASP.Net-MVC 的约定,编辑器模板放在/Views/Shared/EditorTemplates 中。然后,默认情况下,将在您调用时使用带有模型类型 @model mynamespace.UArama 的编辑器模板放置在此位置:

    @Html.EditorFor(m => m.u) 
    

    我发现当我以这种方式使用编辑器模板时,模型绑定效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 2012-05-03
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 2014-04-10
      • 1970-01-01
      相关资源
      最近更新 更多