我对 asp.mvc 3 很陌生。我正在使用 kendoui 和敲除进行绑定。我的应用程序看起来像这个示例:
视图模型
public class MyViewModel
{
public MyViewModel()
{
Initialize();
}
public IEnumerable<string> MyOptions1 { get; set; }
public string MyChoice1 { get; set; }
public IEnumerable<string> MyOptions2 { get; set; }
public string MyChoice2 { get; set; }
private void Initialize()
{
MyOptions1 = new List<string>()
{
"OptionA",
"OptionB"
};
MyOptions2 = new List<string>()
{
"OptionC",
"OptionD"
};
}
}
Home控制器的索引方法
public ActionResult Index()
{
return View();
}
索引视图:
<div id="optionsArea">
<table>
<tr>
<td><label>Option1:</label></td>
<td><input id="options1" data-bind="kendoDropDownList: { data: MyOptions1, value: MyChoice1 }" /></td>
</tr>
<tr>
<td><label>Option2:</label></td>
<td><input id="options2" data-bind="kendoDropDownList: { data: MyOptions2, value: MyChoice2 }" /></td>
</tr>
</table>
</div>
加载索引视图时,我正在调用OptionsData
控制器的方法,该方法返回填充MyViewModel
为 Json。
public ActionResult OptionsData()
{
var myModel = new MyViewModel();
var jsonNetResult = new JsonNetResult
{
Formatting = Formatting.Indented,
Data = myModel
};
return jsonNetResult;
}
在 javascript中MyViewModel
,我创建了具有可淘汰可观察属性的填充 javascript 视图模型viewModel
,并将其绑定到索引视图中的 div。
$(function () {
my = {
}
$.getJSON("/Home/OptionsData", function (data) {
// create observable properties from MyViewModel
my.viewModel = ko.mapping.fromJS(data);
ko.applyBindings(my.viewModel, document.getElementById("optionsArea"));
});
});
在我的应用程序中,我有许多包含标签和下拉列表的元素,因此我想将该部分提取到一个组件中,并重用它并使用一些参数调用它来替换绑定。我阅读了一些文章,也许解决方案是使用部分视图或自定义 HTML 助手,这样我就可以执行以下操作:
_OptionPartialView
<tr>
<td><label>Option2:</label></td>
<td><input data-bind="kendoDropDownList: { data: (parameter1), value: (parameter2) }" /></td>
</tr>
当我在索引视图中调用部分时,我想以某种方式替换参数 1 和参数 2:
@Html.Partial("_OptionPartialView.cshtml", parameter1, parameter2);
或使用辅助方法:
@Html.MyCustomHelper(..., parameter1, parameter2);
然后我将我的 Index 方法强绑定到 Index 视图:
public ActionResult Index()
{
var myModel = new MyViewModel();
return View(myModel);
}
我的观点看起来像这样:
@model MVC3Question.Models.MyViewModel
<div id="optionsArea">
<table>
@Html.Partial("_OptionPartialView.cshtml", Model.MyOptions1, Model.MyChoice1);
@Html.Partial("_OptionPartialView.cshtml", Model.MyOptions2, Model.MyChoice2);
</table>
</div>
我的问题是,在这种情况下,Partial View 或 Custom Helper 方法哪个更好,更重要的是如何使用参数实现它们,同时牢记发布的示例代码。欢迎任何其他方法或想法。谢谢!