在过去,我一直使用编辑器模板,通过应用以下数据注释:
[UIHint("SomeTemplate")]
ViewModel:
public class MicroViewModel { public IEnumerable<LabMicro> Micros { get; set; } [UIHint("DateTime")] public DateTime Date { get; set; } public int CaseNo { get; set; } [UIHint("SampleTypes")] public int LabSampleTypeID { get; set; } [UIHint("SampleDetails")] public int LabSampleDetailID { get; set; } }
如果我想使用特定的日期选择器控件而不是普通的控件,它可以实现如下。
例:
@model DateTime? @Html.TextBox("",String.Format("{0:yyyy-MM-dd}",Model.HasValue ? Model : DateTime.Today),new { @class = "dp",style="width:100px" }) <script type="text/javascript"> $(document).ready(function () { $(".dp").datepicker({ changeMonth: true,changeYear: true,dateFormat: 'yy-mm-dd' }); }); </script>
对于我的ID字段,我想使用jQuery自动完成组件。
题:
我如何将附加参数传递给LabSampleTypeID和LabSampleDetailID的UIHint部分视图? (像Id一样,有一个自动完成的编辑器模板,将采取一个URL和属性名称为例)
我认为我的自动完成编辑器模板/部分应该看起来像:
$(".auto").autocomplete({ source: function(request,response) { $.ajax({ url: '[#URL_TO_USE]',dataType: "json",data: { filter: request.term },success: function(data) { response($.map(eval(data),function(item) { return { label: item.[#PROPERTY_TO_USE] } })); } }) } });
解决方法
您可以使用AdditionalMetadata属性:
[UIHint("DateTime")] [AdditionalMetadata("foo","bar")] public DateTime Date { get; set; }
并在模板中:
@ViewData.ModelMetadata.AdditionalValues["foo"]
所以如果你想传递一个url:
[UIHint("DateTime")] [AdditionalMetadata("controller","somecontroller")] [AdditionalMetadata("action","someaction")] [AdditionalMetadata("property","someproperty")] public DateTime Date { get; set; }
并在您的模板:
@{ var values = ViewData.ModelMetadata.AdditionalValues; } <script type="text/javascript"> $('.auto').autocomplete({ source: function (request,response) { $.ajax({ url: '@Url.Action((string)values["action"],(string)values["controller"])',success: function (data) { response( $.map(eval(data),function (item) { return { label: item['@values["property"]'] } }) ); } }); } }); </script>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。