今天我得2分 I.我有一个控制器,我有一个公共静态方法来获取复选框的详细信息,如
public static List<country> GetCountryLists()
{
List<country> countries = new List<country>();
country _country = new country() { countryname = "Select a country", value = "0" };
country _country1 = new country() { countryname = "India", value = "India" };
country _country2 = new country() { countryname = "USA", value = "USA" };
countries.Add(_country);
countries.Add(_country1);
countries.Add(_country2);
return countries;
}
目前,我正在通过
使用此功能 ViewData["country"] = GetCountryLists();
我可以在视图中使用与此相同的功能,这样我就不需要使用viewdata对象了,
<%: Html.DropDownList("country", new SelectList(UserController.GetCountryLists(), "value", "countryname", "0"))%>
请建议我最好的做法。
II。我还有另一个查询,当我使用相同的id&amp; radiobuttons的名称,客户端的验证工作正常。
如果我对一组复选框使用相同的条件,我得不到在客户端验证期间突出显示复选框,并且仅在服务器验证期间,我收到错误消息,但控件[复选框]没有指示错误的红色边框。
我使用自己的html助手按照http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs
请告诉我是否有任何可能解决此问题的方法。由于我是asp.net mvc2的新手,我不确定是否使用这些......请相应地建议我。
答案 0 :(得分:1)
我可以在视图中使用与此相同的功能,这样我就不需要使用viewdata对象了
不,由于各种原因,这不是好的做法和违反MVC模式。观点不应该提取信息。它们应该只使用在视图模型中传递的信息。控制器负责调用各种方法来获取数据,然后构建包含视图所需的所有必要信息的视图模型,然后将此视图模型传递给视图。所以这是建议的方式:
<%= Html.DropDownListFor(
x => x.Country,
new SelectList(Model.Countries, "value", "countryname")
) %>
或使用丑陋/弱类型/避免使用/需要魔术字符串ViewData
:
<%= Html.DropDownList(
"Country",
new SelectList((IEnumerable)ViewData["Countries"], "value", "countryname")
) %>
并且控件负责填充视图模型属性或丑陋的ViewData。
就您的第二个问题而言,您需要显示您的代码才能看到它的错误。根据您的描述,我可以说,您不能在DOM中拥有两个具有相同ID的元素,或者您获得的标记无效。