相关疑难解决方法(0)

DropDownList设置asp.net MVC中的选定项

我注意到在我看来asp.net MVC中的一个错误,或者只是我做错了什么.我目前正在使用1.0,所以这可能会在2.0版本中得到解决.但不管怎样,我们走了.

当我的视图模型具有与下拉列表的声明ID同名的属性时,将忽略所选项,并且渲染的html没有选择任何内容.不确定我是否做错了,但更改ID的名称可以解决问题.我简化了这个例子,希望很清楚,否则请告诉我.

这是我的视图,其中声明的ID与模型中的列表名称相同:

<table border="0" cellpadding="0" cellspacing="0">
   <tr>
      <td>
         <%= Html.DropDownList("IsMultipleServicers", Model.IsMultipleServicers) %>
      </td>
   </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

和渲染的Html

<table border="0" cellpadding="0" cellspacing="0">
      <tr>
         <td>
             <select id="IsMultipleServicers" name="IsMultipleServicers">
                <option value="false">No</option>
                <option value="true">Yes</option>
             </select>
         </td>
      </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

现在让我们做一个小改动.我将更改声明的id为不同的东西.

这是我的观点:

<table border="0" cellpadding="0" cellspacing="0">
    <tr>
       <td>
          <%= Html.DropDownList("MultipleServicers", Model.IsMultipleServicers) %>
       </td>
    </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

现在渲染的html:

<table border="0" cellpadding="0" cellspacing="0">
   <tr>
      <td>
         <select id="IsMultipleServicers" name="IsMultipleServicers">
            <option value="false">No</option>
            <option selected="selected" value="true">Yes</option>
         </select>
      </td>
   </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

请注意,现在我得到一个选定的选项,它将是List中的第二个元素.

这是我的ViewModel只是将所有内容联系在一起:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc drop-down-menu

26
推荐指数
2
解决办法
9万
查看次数

如何为枚举制作默认的编辑器模板?

如何为枚举创建默认编辑器模板?我的意思是:我可以做这样的事情:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Enum>" %> 
<% -- any code to read the enum and write a dropdown -->
Run Code Online (Sandbox Code Playgroud)

并将其放在EditorTemplates文件夹下的名称下Enum.ascx

这是我尝试过的问题的解决方法,但这不是我需要的.

这是我的枚举:

public enum GenderEnum
{
    /// <summary>
    /// Male
    /// </summary>
    [Description("Male Person")]
    Male,

    /// <summary>
    /// Female
    /// </summary>
    [Description("Female Person")]
    Female
}
Run Code Online (Sandbox Code Playgroud)

我制作了一个名为的模板GenderEnum.acsx并将其放入Shared/EditorTemplates文件夹中.这是模板:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<AlefTech.HumanResource.Core.GenderEnum>" %>
<%@ Import Namespace="AlefTech.HumanResource.WebModule.Classes" %>
<%=Html.DropDownListFor(m => m.GetType().Name, Model.GetType()) %>
Run Code Online (Sandbox Code Playgroud)

当然这个方法是我自己的:

public static class HtmlHelperExtension
    {
        public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc enums mvc-editor-templates

20
推荐指数
4
解决办法
8481
查看次数

如何使用Enum的MVC Html Helper .DropDownListFor <>

在我的MVC 3 Razor应用程序中,我有一个带有枚举的模型..

模型示例:

public class EmployeeModel
{
 public enum Title
 {
  Accountant = 111,
  Sales = 222,
  Production = 333 
 }

 [Required]
 public string Name {get; set;}

 [Required]
 public Title JobTitle {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

在我的视图中,我想使用Html助手来构建一个Html表单...

查看示例:

@model ..Models.EmployeeModel

@using (Html.BeginForm())
{
 @Html.LabelFor(m => m.Name)
 @Html.TextBoxFor(m => m.Name)
 <br>

 @Html.LabelFor(m => m.JobTitle)
 @Html.DropDownListFor(m => m.JobTitle, ??How do I get Title enum values??)
 <br>

 <input type="submit />
}
Run Code Online (Sandbox Code Playgroud)

我试图实现的DropDownListFor的输出如下所示: 注意选项值与枚举的初始化值匹配

<select name="JobTitle">
 <option value="-1">Choose a Job Title</option>
 <option value="111">Accountant</option>
 <option value="222">Sales</option> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc html-helper html.dropdownlistfor razor asp.net-mvc-3

5
推荐指数
1
解决办法
3万
查看次数

DropDownListFor枚举不会绑定回模型

在我的MVC表单上,我需要将一个下拉框绑定到我的ViewModel上的枚举.我发现这样做的最好方法在这里描述.

它似乎首先工作,但现在我已经在我的表单中添加了验证,我发现它没有绑定回ViewModel.

这是我的剃刀代码:

<div class="editor-field">
    @Html.DropDownListFor(model => model.response, 
                          new SelectList(Enum.GetValues(typeof(Vouchers.Models.ResponseType))),
                          "Please Select")
</div>
Run Code Online (Sandbox Code Playgroud)

这是我对该领域的视图模型定义:

[DisplayName("Response")]
[Range(1, int.MaxValue, ErrorMessage = "You must select a response before submitting this form.")]
public ResponseType response { get; set; }
Run Code Online (Sandbox Code Playgroud)

问题是我无法提交表格; 即使从我的下拉列表中选择响应后,也会显示Range属性的Validation错误消息,并且客户端验证会阻止表单提交.

我相信这是因为下拉列表的SelectList只包含枚举的字符串名称,而不包含基础整数值.

我怎么解决这个问题?

validation asp.net-mvc asp.net-mvc-3

2
推荐指数
1
解决办法
1485
查看次数

如何调用以下功能?

我该如何调用此功能?

public static HtmlString DropdownForEnum<TModel>(this HtmlHelper<TModel> helper, Type type,
    string name, string optionLabel, object htmlAttributes)
Run Code Online (Sandbox Code Playgroud)

c# generics

-1
推荐指数
1
解决办法
117
查看次数