- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
所以我试图在下拉列表中对标签进行样式化。我的 MVC 助手的设置有点像这样,但真正的东西是从数据库中提取的,所以数据不是硬编码的。
@{
List<string> ListOfText = new List<string> { "FirstThing","SecondThing","ThirdThing"};
List<string> ListOfValue = new List<string> { "1","2","3"};
List<SelectListItems> ListOFSELCETLISTITEMS = new List<SelectListItem>();
for (int x = 0; x < 3; x++)
{
ListOFSELCETLISTITEMS .Add(new SelectListItem
{
Text = ListOfText[x],
Value = ListOfValue[x],
Selected = (selectedValue == ListOfValue[x])
});
}
}
@Html.DropDown("NAME",ListOFSELCETLISTITEMS)
这给了我类似的东西
<select id="Name" name="Name">
<option value="1">FirstThing</option>
<option value="2">SecondThing</option>
<option value="3">ThirdThing</option>
</select>
我需要的是这样的东西
<select id="Name" name="Name">
<option value="1" class="option1">FirstThing</option>
<option value="2" class="option2">SecondThing</option>
<option value="3" class="option3">ThirdThing</option>
</select>
我试过做类似的事情
@{
List<string> ListOfText = new List<string> { "FirstThing","SecondThing","ThirdThing"};
List<string> ListOfValue = new List<string> { "1","2","3"};
}
<select id="Name" name="Name">
@ for (int x = 0; x < 3; x++)
{
<text>
<option value="@ListOfValue[x]" @{if(selectedValue == ListOfValue[x])
{ @Html.Raw("selected='selected'") }}
@class = '@Html.Raw("option"+x)'>
@ListOfText[x]
</option>
</text>
}
</select>
但这似乎让 Controller 感到困惑,并且它无法识别上方下拉菜单的值映射到
public ActionResult method(string Name)
在 Controller 上发布或获取。行吧
@Html.DropDown("NAME",ListOFSELCETLISTITEMS)
在 View 中确实允许 Controller 理解方法应该映射到该下拉列表的值。
我该怎么做?有没有办法消除 Controller 的混淆并能够在没有 Html.helpers 的情况下手写 HTML?
最佳答案
要直接渲染 Controller 操作,您可以尝试:
@{ Html.RenderAction(Action, Controller); }
调用您的 Controller 操作,该操作应返回包含您的内容的字符串。
[HttpGet]
public string Action(int id)
{
return your context in here
}
但是我认为添加一个 Ajax 操作返回用于构建选择的数据并在获得结果后使用 jquery 解决方案添加一个类(可以在 AJAX 响应本身中返回)会更清晰
编辑:澄清:
假设您有一个 Item 集合,如下所示:
class Item {
public int Value { get; set; }
public string CssClass { get; set; }
public string Description{ get; set; }
}
private const string EMPTY_OPTION = "<option value=''></option>";
[HttpGet]
public string Action(int id)
{
// Load a collection with all your option's related data
IQueryable data = LoadSomethingFromDbOrWherever(id);
// Build output
StringBuilder sb = new StringBuilder();
sb.AppendFormat("<select id='foo' name='foo'>");
sb.AppendFormat(EMPTY_OPTION);
foreach (Item b in data)
{
sb.AppendFormat("<option value='{0}' class='{1}'>{2}</option>",
b.Value, b.CssClass, b.Description);
}
sb.AppendFormat("</select>");
return sb.ToString();
}
对于 ajax 选项:
[HttpGet]
public JsonResult Action(int id)
{
//same as above, obtain a collection
// Load a collection with all your option's related data
IQueryable data = LoadSomethingFromDbOrWherever(id);
var jsonData = new
{
from c in data
select new
{
Value= c.Value,
CssClass = c.CssClass,
Description = c.Desription
}).ToArray()
};
return Json(jsonData);
}
通过 $.ajax 调用它,在回调中您将拥有一个包含所有数据的 javascript 对象,然后使用 jQuery 构建选择选项。
问候
关于c# - .NET MVC 3 在 C# 中向 SelectListItem 添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755290/
我正在尝试为用户填写一个表单以注册到 asp.net MVC 网站,我正在努力让下拉列表正确显示文本。该模型具有以下内容: public SelectList CountiesList; 在构造函数中
我正在将现有的 MVC3 应用程序从 InProc 移动到 ASP.Net session 状态服务。其中一个模型对象具有此属性: public List StateCodes { get; set;
我有一个带有常量的静态类,我想将其存储在一个列表中,以便在 DropDown 中使用 public static class DateFormatConstant { [Display(Nam
我正在尝试从 selectlistitem 中删除一个项目。到目前为止,我还没有取得任何成功 代码截图如下 使用 System.Collections.Generic; List ab
问题 我目前正在向我的 MVC 项目添加自动映射,但我遇到了困难。现在我有一个用户模型用于表示数据库中的数据。我必须将该模型映射到将在调用 Edit 方法时使用的 EditUserModel。 Edi
我正在尝试从数据库中填充下拉列表, 我正在关注这个 link 我在模型中写了如下代码 public class FillDeptName { public IList Drp_Name { g
我有以下类(class): public static IEnumerable GetDatastore() { return new[] { new
我有以下代码,但我有错误 Error 6 foreach statement cannot operate on variables of type 'int' because 'int' does
我有一个这样的对象: public class AppointmentStatus { public int Id {get;set;} public string I18NKey
我在从 SelectListItem 获取选定值时遇到问题。 这是我的模型: public class GiveCourseNameModel { public string Selected
忙于为 Controller 编写单元测试,该 Controller 生成一个 View 模型,其中包含一个选项列表,如 IEnumerable 。我尝试检查预期列表是否包含 View 模型中的所有列
我正在尝试将一个项目添加到 IEnumerable SelectList。我有一个填充我的列表的初始查询,然后我有一个查询来检查是否存在名为“INFORMATIONAL”的项目。如果没有,我需要将它添
我正在尝试为下拉列表获取不同的值,但是当使用以下语法时,它会返回所有行。 有人可以告诉我如何使用正确的语法获取不同的值集吗? IEnumerable ldidList = _db.TrafficHit
这里有一个棘手的问题。我正在尝试将列表项转换为 IEnumerable . 列表 dynamicTextInDatabase只需返回我的数据库中使用的所有枚举。目前只返回 1 和 2。数据类 simp
我有一个 asp.net-mvc 网页,我想显示一个基于枚举的下拉列表。我想显示每个枚举项的文本和 id 是与枚举关联的 int 值。有什么优雅的方法可以进行这种转换吗? 最佳答案 您可以使用 LIN
无论如何,Automapper 是否可以忽略某种类型的所有属性?我们正试图通过验证 Automapper 映射来提高我们代码的质量,但不得不输入 .Ignore()所有 IEnumerable总是手动
public IEnumerable GetList(int? ID) { return from s in db.List orderby s.Descrip
这个问题与 ASP.NET MVC 2 RC(12 月下降)有关。基本问题是,当创建具有默认选定值的下拉列表时,“selected”属性要么未呈现为 HTML,要么归因于错误的选项。 下面是一些演示错
retval.AddRange(oldList.Union(newList)); oldList 和newList 都在这里声明 List oldList = new List(); List new
我在这里拉扯我的头发。我正在使用 DropDownListFor MVC3 中带有枚举的 HTML 帮助器,如下所示: @Html.DropDownListFor(model => model.Tit
我是一名优秀的程序员,十分优秀!