C# MVC编辑器,带下拉列表和文本框
我还是MVC新手,我不太明白C# MVC编辑器,带下拉列表和文本框,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,我还是MVC新手,我不太明白EditorFor在MVC5中是如何工作的 我正在基于现有数据库构建一个项目,因此对于EF使用数据库优先的方法是有意义的。创建模型和初始模板没有问题,但我的数据库中有一列如下所示: Plant ID Leaf Color 1 Green 2 Yellow 3 Green 4 Red 5 Green 6 Purple 由于绿色和黄色是植物叶子更
EditorFor
在MVC5中是如何工作的
我正在基于现有数据库构建一个项目,因此对于EF使用数据库优先的方法是有意义的。创建模型和初始模板没有问题,但我的数据库中有一列如下所示:
Plant ID Leaf Color
1 Green
2 Yellow
3 Green
4 Red
5 Green
6 Purple
由于绿色和黄色是植物叶子更常见的颜色
绿色、黄色和其他
。(即,如果颜色为红色,则应指向下拉列表中的“其他”)文本框
,供用户手动输入颜色MVC控制器,使用实体框架
创建模板时,EditorFor
将自动为该字段创建一个文本框
。Index.cshtml
和Delete.cshtml
没有问题,因为它们不涉及EditorFor
。但是,问题出现在Edit.cshtml
和Create.cshtml
中
我将如何实现我所需要的
其他信息:我对jQuery非常熟悉,在使用ASP.NET WebForm时,我知道如何使用jQuery隐藏/显示文本框,但我似乎不明白如何将其应用于EditorFor和LabelFor您可以使用jQuery将值从两个可见控件(回发时忽略)复制到一个不可见控件(在回发时用作颜色)。类似于这样;使用jquery对更改事件进行查询以保持控件的同步
<div class="visible-controls">
<select>
<option>select</option>
<option>Green</option>
<option>Yellow</option>
<option>Other</option>
</select>
<input type="text" placeholder="other" />
</div>
<div class="invisible-controls">
<input type="text" name="colour" />
</div>
选择
绿色
黄色的
其他
我想主要的一点是Editorfor默认情况下不会生成类似的内容。对于复杂控件,您必须更接近原始html,而不是使用HtmlHelper。您可以这样做:
Plant ID Leaf Color
1 Green
2 Yellow
3 Green
4 Red
5 Green
6 Purple
html位于您的html页面中,就在您的ViewBag下面
@using (Html.BeginForm())
{
<p>
Colour: @Html.DropDownList("Colour", "Select")
@Html.TextBox
</p>
}
@使用(Html.BeginForm())
{
颜色:@Html.DropDownList(“颜色”、“选择”)
@Html.TextBox
}
在控制器中创建一个新方法并将其添加到中。它
创建包含所需三项的新下拉列表
public ActionResult索引(字符串颜色)
{
//创建一个下拉列表
var SearchOptionList=新列表();
SearchOptionList.Add(“绿色”);
SearchOptionList.Add(“黄色”);
SearchOptionList.Add(“其他”);
var mylist=从“您的数据库表名在这里”中的m选择m;
//清除下拉列表
ModelState.Remove(“颜色”)
返回视图(mylist.ToList());
}
你在JQuery方面比我有更好的经验,你说你知道如何使文本框出现,所以你应该在中调整它。为下拉框和文本框创建一个具有单独属性的视图模型