2013-07-23 24 views
2

我有一个如下定义的模型。使用html为单选按钮映射ASP.NET MVC模型而不使用Htmlhelpers

public class Holiday 
    { 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public DateTime Date { get; set; } 
     public HolidayType Type { get; set; } 
     public bool AllYears { get; set; } 
    } 
    public enum HolidayType 
    { 
     HOLIDAY1 = 1, 
     HOLIDAY2, 
     HOLIDAY3 
    } 

在我看来,我正在写html代码而不使用htmlhelpers(具体的项目原因)。 现在我的姓名,描述,日期等数据绑定到除单选按钮外的模型字段HolidayType Type

以下是视图代码。我怎样才能得到在我的输入页面中自动填充的Type值。

@model Models.Holiday 

@{ 
    ViewBag.Title = "Create"; 
} 
<!DOCTYPE html> 
<html> 
<head> 
    <title>Create Holiday</title> 
    <script src="~/Content/Renderer/KendoUI/kendo.web.min.js"></script> 
    <script> 
     $(function() { 

      $("#holiday").kendoDatePicker(); 
     }); 
    </script> 
</head> 
<body> 
    <form id="createholiday" action="/holiday/holiday/create" method="post"> 
     <label for="Name">Holiday Name</label> 
     <input type="text" id="name" name="Name" /><br /> 
     <label for="Description">Holiday Description</label> 
     <input type="text" id="description" name="Description" /><br /> 
     <label for="Date" id="date">Date</label><br /> 
     <input id="holiday" name="Date"/><br /> 
     <label for="type">Type</label> 
     <input type="radio" name="Type" value="Holiday 1">Holiday 1<br> 
     <input type="radio" name="Type" value="Holiday 2">Holiday 2<br> 
     <input type="radio" name="Type" value="Holiday 3">Holiday 3<br> 
     <input type="submit" name="submit" value="Create" /> 
    </form> 
</body> 
</html> 
+0

如果你的“具体项目的原因”是因为你从一个网页设计师的HTML那么这不是一个好的理由。将代码更改为使用助手。你这样放弃了太多的功能。否则,为什么要使用MVC?只是使用网页 –

回答

2

如果您的视图引擎是剃须刀,请像下面那样更改RdoBtns的值。我不知道,希望工程......

<input type="radio" name="Type" value="@Prj.Models.HolidayType.HOLIDAY1">Holiday 1<br> 
<input type="radio" name="Type" value="@Prj.Models.HolidayType.HOLIDAY2">Holiday 2<br> 
<input type="radio" name="Type" value="@Prj.Models.HolidayType.HOLIDAY3">Holiday 3<br> 
+1

是的最后我用这个连接模型和它的作品。 – ckv

0

您可以通过使用C#和doc.ready如jQuery代码混合如果你想要这个东西做到这一点,

<script> 
    $(function() { 
     $("#holiday").kendoDatePicker(); 

     <% if(Model.Type==HolidayType.HOLIDAY1) {%> 
     $('input[value=Holiday 1]').attr('checked','checked'); 
     <%}else if (Model.Type==HolidayType.HOLIDAY2) {%> 
     $('input[value=Holiday 2]').attr('checked','checked'); 
     //...... 

    }); 
</script> 

而且,对于文本框,

$('#name').val('<%:Model.Name%>'); 
$('#description').val('<%:Model.Description%>'); 
0

在您的视图中,然后遍历Type字符串值列表,如下所示:

@{foreach(var holiday in new List<string>(){"Holiday 1", "Holiday 2", "Holiday 3"}) 
    { 
     <input type="radio" name="Type" value="@holiday" @(Model.Type == holiday ? "checked='checked'" : "")>@holiday <br>  
    } 
} 

这是普遍较好通过模型的列表中传递,与您可以访问这样一个新的属性:但正如其他人指出,在foresaking HtmlHelpers你扔了一个真正

@{foreach(var holiday in Model.HolidayLists) // ...etc 

框架的好块。

1
<input type="radio" name="Gender" value="Male">Male 
<input type="radio" name="Gender" value="Female">Female 

在控制器获得性别值

public ActionResult YourAction(string Gender) 
{ 
    //Your Action Code Here 
} 
相关问题