我有一个用于用户管理页面的枚举列表.我正在使用MVC 5.1中的新HtmlHelper,它允许我为Enum值创建一个下拉列表.我现在需要从列表中删除Pending值,此值只能以编程方式设置,并且永远不应由用户设置.
枚举:
public enum UserStatus
{
Pending = 0,
Limited = 1,
Active = 2
}
Run Code Online (Sandbox Code Playgroud)
视图:
@Html.EnumDropDownListFor(model => model.Status)
Run Code Online (Sandbox Code Playgroud)
无论如何,要么覆盖当前控件,要么编写一个允许我指定枚举的自定义HtmlHelper,或者从结果列表中排除枚举?或者你会建议我用jQuery做客户端的东西,一旦生成后从下拉列表中删除值?
谢谢!
在使用这样的代码(EditorTemplates/UserType.ascx)时,默认的ASP.NET MVC2 Html助手似乎会生成重复的HTML ID:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<UserType>" %>
<%: Html.RadioButton("", UserType.Primary, Model == UserType.Primary) %>
<%: Html.RadioButton("", UserType.Standard, Model == UserType.Standard) %>
<%: Html.RadioButton("", UserType.ReadOnly, Model == UserType.ReadOnly) %>
Run Code Online (Sandbox Code Playgroud)
它产生的HTML是:
<input checked="checked" id="UserType" name="UserType" type="radio" value="Primary" />
<input id="UserType" name="UserType" type="radio" value="Standard" />
<input id="UserType" name="UserType" type="radio" value="ReadOnly" />
Run Code Online (Sandbox Code Playgroud)
这清楚地表明了一个问题.所以我一定是在滥用助手等等.
我可以手动指定id
为html属性,但我无法保证它将是唯一的.
所以问题是如何确保RadioButton助手生成的ID对于每个值都是唯一的,并且仍然保留用于生成这些ID 的约定(因此嵌套模型是否受到尊重?(最好不要手动生成ID.)
我一直试图弄清楚RenderAction和Action之间的区别.我不知道我是否如此关注这一点上的差异,以及为什么我无法让RenderAction工作.据我所知,我正在传递正确的参数.我正在使用的重载似乎是相同的:
@Html.RenderAction(Action, Controller, Route)
@Html.Action("Breadcrumb", "Navigation", new {SeoUrl = Model.CarlineBucket.SEOURLName})
@Html.RenderAction("Breadcrumb", "Navigation", new {SeoUrl = Model.CarlineBucket.SEOURLName})
Run Code Online (Sandbox Code Playgroud)
我尝试使用RenderAction时收到编译错误:
CS1502:'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'的最佳重载方法匹配具有一些无效参数.
任何提示或提示?我是否应该甚至不打扰RenderAction?
我为什么要用LabelFor
而不是<label>
?
例如.
@Html.LabelFor(model => model.FirstName)
@Html.DisplayFor(model => model.FirstName)
Run Code Online (Sandbox Code Playgroud)
VS
<label for="FirstName">First Name</label>
@Html.DisplayFor(model => model.FirstName)
Run Code Online (Sandbox Code Playgroud)
除此之外,@ pswg已涵盖此问题的DRY方面.我还想知道它是否有助于本地化.即.基于当前语言设置的不同标签.
我onchange
通过简单的HTML 处理具有选定值的事件,如下所示:
<select onchange="location = this.value;">
<option value="/product/categoryByPage?PageSize=15" selected="selected">15</option>
<option value="/product/categoryByPage?PageSize=30" selected="selected">30</option>
<option value="/product/categoryByPage?PageSize=50" selected="selected">50</option>
</select>
Run Code Online (Sandbox Code Playgroud)
这样做:
List<SelectListItem> items = new List<SelectListItem>();
string[] itemArray = {"15","30","50"};
for (int i = 0; i < itemArray.Count(); i++)
{
items.Add(new SelectListItem
{
Text = itemArray[i],
Value = "/product/categoryByPage?pageSize=" + itemArray[i]
});
}
ViewBag.CategoryID = items;
@Html.DropDownList("CategoryID")
Run Code Online (Sandbox Code Playgroud)
我该如何处理onchange
与@Html.DropDownList()
我的asp.net mvc web应用程序中有以下内容: -
<div><span class="f">Data Center Name</span> @Html.EditorFor(model => model.Switch.TMSRack.DataCenter.Name, new { disabled = "disabled" })</div>
Run Code Online (Sandbox Code Playgroud)
但是这个领域不会被禁用,有人可以请求吗?谢谢
我对如何在ASP.NET MVC 2.0 R2上使用新的强类型Html.DropDownListFor帮助程序感到十分迷茫和困惑
在我写的视图中:
<%= Html.DropDownListFor(m => m.ParentCategory, new SelectList(Model.Categories, "CategoryId", "Name", Model.ParentCategory), "[ None ]")%>
<%= Html.ValidationMessageFor(m => m.ParentCategory)%>
Run Code Online (Sandbox Code Playgroud)
因此我的Model对象是:
public class CategoryForm : FormModelBase
{
public CategoryForm()
{
Categories = new List<Category>();
Categories.Add(new CategoryForm.Category() {
CategoryId = 1,
Name = "CPUs" });
Categories.Add(new CategoryForm.Category() {
CategoryId = 2,
Name = "Memory" });
Categories.Add(new CategoryForm.Category() {
CategoryId = 3,
Name = "Hard drives" });
}
// ...other props, snip... //
public Category ParentCategory { get; set; }
public …
Run Code Online (Sandbox Code Playgroud) asp.net-mvc html-helper viewmodel asp.net-mvc-2 drop-down-menu
MVC的新手,并且已经在asp.net网站上运行了教程.
它们包含一个自定义html帮助程序示例,用于截断表中显示的长文本.
只是想知道人们使用HTML帮助程序提出了哪些其他解决方案,以及在创建/使用它们时是否有任何最佳实践或要避免的事项.
作为一个例子,我正在考虑编写一个自定义助手来格式化我需要在各个地方显示的日期,但我现在担心可能有一个更优雅的解决方案(我的模型中的IE DataAnnotations)
有什么想法吗?
编辑:
我刚才想到的另一个潜在用途......字符串连接.自定义帮助程序可以将userID作为输入并返回用户全名...结果可以是(标题)(第一个)(中)(最后)的某种形式,具体取决于哪些字段可用.只是一个想法,我还没有尝试过这样的事情.
如何从控制器外部的辅助方法生成指向控制器操作的URL?
html-helper ×10
asp.net-mvc ×9
razor ×3
c# ×2
.net ×1
controller ×1
enums ×1
html ×1
moq ×1
nunit ×1
radio-button ×1
unit-testing ×1
viewmodel ×1