我创建了自定义“DataType”注释,用于模型对象,告诉它是视图上的日期字段。 ([DataType("Date")]
)如果我使用@Html.EditorFor(model => model.DateCreated)
,它将作为日期字段并播放JavaScript日期选择器。这是我在EditorTemplates下使用的模板
@inherits System.Web.Mvc.WebViewPage<DateTime>
<div class="input-append date" data-date="12-02-2012">
<input type="text" class="span2">
</div>
查看 -
<div class="control-group">
@Html.LabelFor(model => model.DateCreated, new { @class = "control-label" })
<div class="controls" id="date-container">
@Html.EditorFor(model => model.DateCreated, new { @class="input-append date"})
@Html.ValidationMessageFor(model => model.DateCreated, null, new { @class = "help-inline" })
</div>
</div>
模型 -
[Display(Name = "Date Created")]
[DataType("Date")]
public DateTime DateCreated { get; set; }
控制器 -
public ActionResult Create(int id)
{
// Attempt to get new customer object
GetPaymentResponse paymentResponse = _BillingService.GetPayment(id);
// Check whether response was successful
if (paymentResponse.State == BaseResponseState.Valid)
{
paymentResponse.Payment.Type.AvailableOptions = paymentResponse.Payment.Type.AvailableOptions.Where(x => x.Value != "BalancingTransaction").ToList();
ViewData.Model = paymentResponse.Payment;
return View();
}
}
我需要通过模型中的数据类型向我的视图传递一些额外的值。
E.g。 [DataType("Date"), Format("dd/mm/yy"), StartDate("12-02-2012")]
您能否告诉我如何从模板中获取这些额外价值? (我是ASP.Net MVC的新手,我正在使用MVC 3)
由于
答案 0 :(得分:1)
如果使用模型绑定,我应该正确地使用值。
在您的视图中,在第一行上设置模型,行:
@model MyViewModel
然后在您的控制器中,不要将Model
传递给ViewData
,而是执行以下操作:
var model = new MyViewModel();
// do stuff with your model here
return View(model);
答案 1 :(得分:1)
假设StartDate
属于Payment
<div class="control-group">
@Html.LabelFor(model => model.StartDate, new { @class = "control-label" })
<div class="controls" id="date-container">
@Html.EditorFor(model => model.StartDate, new { @class="input-append date"})
@Html.ValidationMessageFor(model => model.StartDate, null, new { @class = "help-inline" })
</div>
</div>
答案 2 :(得分:1)
如果使用属性指定额外信息,则对于定义该成员的类的所有实例,该信息必须是常量。即StartDate
对于模型的所有实例都是相同的,因为属性中指定的开始日期必须是常量。
如果这符合你的要求,你可以使用custom metadata provider从自定义属性中获取具体的metadata in your model。
如果需要为每种情况传递不同的数据,则必须使用允许传递额外视图数据的EditorFor
的任何重载。然后,您可以从模板中的ViewData
中读取额外信息。
请注意,元数据提供程序和自定义模板实现以及注册中存在一些警告。考虑您的类型是否可以为空,例如DateTime?