pir*_*ris 14 c# asp.net-mvc editorfor razor asp.net-mvc-4
我正在尝试为复杂类型的列表创建一个EditorFor().具体来说,下面的"选项"应显示在一个多文本输入中,其中每个选项(字符串)都在一个新行中.但是,我只能在文本框中显示一个选项而不是所有选项....
我的视图模型和类:
public class ItemViewModel
{
public int itemId { get; set; }
[UIHint("Option")]
public List<Option> Options { get; set; }
}
public class Option
{
public string Text { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的编辑模板:
EditorTemplates\Item.cshtml
@model ItemViewModel
@Html.EditorFor(model => model.Options)
Run Code Online (Sandbox Code Playgroud)
EditorTemplates\Option.cshtml
//Not sure how to dispay the options here
<textarea rows="4" cols="50">
Display Options
</textarea>
Run Code Online (Sandbox Code Playgroud)
如果我将EditorTemplates更新为:
EditorTemplates\Item.cshtml
@model ItemViewModel
@Html.EditorFor(model => model.Options[0])
Run Code Online (Sandbox Code Playgroud)
EditorTemplates\Option.cshtml
@Html.TextBoxFor(x => x.OptionText)
Run Code Online (Sandbox Code Playgroud)
它将显示文本框中的第一个选项.但是,我想要实现的是在多文本输入中显示所有选项.
有任何想法吗?
Ant*_*eia 17
只需创建一个视图 Shared/EditorTemplates/Option.cshtml
@model Option
@Html.TextBoxFor(m => m.Text)
Run Code Online (Sandbox Code Playgroud)
并致电
@Html.EditorFor(model => model.Options)
Run Code Online (Sandbox Code Playgroud)
EditorFor为您迭代集合.
hut*_*oid 15
你几乎拥有它.
在此EditorTemplates\Option.cshtml
添加以下内容:
@model IEnumerable<Option>
@foreach(var option in Model)
{
@Html.TextBoxFor(m => option.Text)
}
Run Code Online (Sandbox Code Playgroud)
然后在你的视图中调用它,如下所示:
@Html.EditorFor(model => model.Options)
Run Code Online (Sandbox Code Playgroud)
如果您没有在初始get中填充选项,则需要在ItemViewModel类中添加它:
public class ItemViewModel
{
public ItemViewModel()
{
Options = new List<Option>();
}
public int itemId { get; set; }
[UIHint("Option")]
public List<Option> Options { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
此构造函数初始化集合:
public ItemViewModel()
{
Options = new List<Options>();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
26717 次 |
最近记录: |