我需要在客户端动态生成的文本框中模拟绑定数据(使用jQuery .tmpl插件),以便在我的MVC3控制器中访问数据。我在以下链接找到了代码:
本文讨论了几种与工作源代码一起使用的方法。最后一种方法是我想要的,它的工作原理。但它可能使用webforms视图引擎(在JavaScript块内)或仅使用服务器端标记。如果有人能帮助我使用剃刀语法,我将不胜感激。
特别是我希望在代码中获得以下块的剃刀语法:
<script type="text/javascript">
<%int idx=0;
foreach (var c in Model){
ViewData["key"]=idx; %>
$("#ClientTemplate").tmpl([{FirstName : "<%: c.FirstName %>",
LastName : "<%:c.LastName %>" ,
idx: <%:idx.ToString() %>}]).appendTo("#ExistingClients");
<% idx++;%>
<%} %>
</script>
<script type="text/javascript">
function removeClient(DivName) {$("#" + DivName).remove();}
var num = <%:Model.Count() %>;
$("#btnAddNewClient").click(function () {
$("#ClientTemplate").tmpl([{FirstName : "",
LastName : "" ,
idx: num}]).appendTo("#NewClients");
num++;
});
</script>
答案 0 :(得分:0)
这样的事可能有用:
<script type="text/javascript">
@{
int idx = 0;
foreach (var c in Model)
{
ViewData["key"] = idx;
<text>
$("#ClientTemplate").tmpl([{FirstName : "@c.FirstName",
LastName: "@c.LastName" ,
idx: @idx.ToString()}]).appendTo("#ExistingClients");
</text>
idx++;
}
}
</script>
<script type="text/javascript">
function removeClient(DivName) {$("#" + DivName).remove();}
var num = @Model.Count();
$("#btnAddNewClient").click(function () {
$("#ClientTemplate").tmpl([{FirstName : "",
LastName : "" ,
idx: num}]).appendTo("#NewClients");
num++;
});
</script>
我发现暂时删除脚本标签有助于防止VS2010s剃须刀解析器混淆。
答案 1 :(得分:0)
我无法以我之前想到的方式工作。我最终创建了一个javascript对象,其属性名称与我的C#对象相同,然后使用jquery .ajax调用将对象发送到控制器方法。