创建EditorTemplate MVC3

我想为jquery星级评级插件创建一个editortemplate。 这是我的第一个mvc3项目和jquery的新手,我不知道如何设置它。 我想做的是让用户按星级评分教师。 因此,例如,如果我单击3个星,我如何能够传入3个传入的所有其他信息,以便我可以将该数字保存在数据库中。 在进行局部视图后,我将如何在实际视图中将其引用到需要它的位置? 谢谢你的建议。

@using (Html.BeginForm()) { @Html.ValidationSummary(true) 
Teachers Ratings Wall
@Html.LabelFor(model => model.StarRating)
@*@Html.EditorFor(model => model.StarRating)*@ @Html.ValidationMessageFor(model => model.StarRating)
@Html.LabelFor(model => model.PostComment)
@Html.EditorFor(model => model.PostComment) @Html.ValidationMessageFor(model => model.PostComment)

所以在局部视图中,我只会:

  @model SpeakOut.Model.TeachersRatingsWall           

您可以为StarRating属性创建editortemplate,该属性应位于以下两个位置之一:

  • 〜/查看/共享/ EditorTemplates /
  • 〜/浏览次数// EditorTemplates /

从那里,你可以使用UIHintAttribute并装饰你的模型的属性,(如果它是一个独特的类型)你可以根据类型命名模板,或者你可以称之为完全自定义的东西,并在你去显示时引用模板编辑。

为了演示,我将其称为“StarRating”,这意味着我可以将[UIHint("StarRating")]应用于属性或使用@Html.EditorFor(x => x.StarRating, "StarRating")让它应用这个模板。

接下来是创建实际模板。 鉴于您看起来已经包含了必要的脚本,这只是自定义输出的问题。 所以,我们在这里有模板:

〜/查看/共享/ EditorTemplates / StarRating.cshtml

 @model Int32 @* I don't know how high a rating you want, but I'll assume a 1-5 rating *@ @for (Int32 rating = 1; rating <= 5; r++) { @Html.RadioButtonFor(x => x, rating, new { @class = "star" }) } 

更新

现在我知道它是一个int,我可能会用UIHint装饰你的模型,然后只需正常调用EditorFor ,MVC将负责其余的工作。 例如:

YourViewModel.cs

 [UIHint("StarRating")] [Range(1, 5, ErrorMessage = "Invalid rating")] public Int32 StarRating { get; set; } 

〜/查看/ myController的/ MyForm.cshtml

 @Html.EditorFor(model => model.StarRating) 

〜/查看/共享/ EditorTemplates / StarRating.cshtml

 @model Int32 @for (Int32 rating = 1; rating <= 5; r++) { @Html.RadioButtonFor(model => model, rating, new { @class = "star" }) }