将脚本放置在与模型紧密绑定的局部视图中的最佳实践?
Best practice to place scripts in partial view which is tightly bound to model?
我听说我们不应该在部分视图中使用脚本标签。
但是,当脚本使用局部视图模型时,如何避免在局部视图下方使用脚本?
建议我更好的方法。
@model AddressBookMVC.Models.Contact
<div class="contact-information">
<ul
<li>
<a href="#" id="edit">EDIT</a>
<a href="#" id="edit">DELETE</a>
</li>
</ul>
<div id="name" class="detailed-contact">
@Html.DisplayFor(model => model.Name)
</div>
<div id="email" class="detailed-contact">
Email:
@Html.DisplayFor(model => model.Email)
</div>
<div>
<span id="mobile" class="detailed-contact">
Mobile:
@Html.DisplayFor(model => model.Mobile)
</span>
</div>
</div>
<script>
$('#edit').on('click', function()
{
$.ajax({
url: '@Url.Action("EditContact", "Contacts")',
type: 'get',
//Here I am using model
**data:{contactID:@Model.ContactID}**
}).done(function(partialView)
{
$('#sidePanel').html(partialView);
})
})
</script>
您可以让您的 #edit
标记包含必要的 url:
<div id="edit" data-url="@Url.Action("EditContact", "Contacts", new { contactID = Model.ContactID })">
Click me for the fun stuff
</div>
然后在主布局中包含的单独 javascript 文件中剩下要做的就是:
$('#edit').on('click', function() {
var url = $(this).data('url');
$.ajax({
url: url,
type: 'GET',
}).done(function(partialView) {
$('#sidePanel').html(partialView);
})
});
如您所见,您的 javascript 不再依赖于任何特定于模型的内容 - 它所做的只是依赖于 DOM 中已有的内容。 DOM 中已有的内容是您的局部视图需要处理的内容,以便包含所有必需的详细信息。所以现在你可以将这个 javascript 移动到一个单独的文件中,并利用 js 组合和缩小等功能。当然,你的部分绝对没有任何 javascript.
我听说我们不应该在部分视图中使用脚本标签。 但是,当脚本使用局部视图模型时,如何避免在局部视图下方使用脚本? 建议我更好的方法。
@model AddressBookMVC.Models.Contact
<div class="contact-information">
<ul
<li>
<a href="#" id="edit">EDIT</a>
<a href="#" id="edit">DELETE</a>
</li>
</ul>
<div id="name" class="detailed-contact">
@Html.DisplayFor(model => model.Name)
</div>
<div id="email" class="detailed-contact">
Email:
@Html.DisplayFor(model => model.Email)
</div>
<div>
<span id="mobile" class="detailed-contact">
Mobile:
@Html.DisplayFor(model => model.Mobile)
</span>
</div>
</div>
<script>
$('#edit').on('click', function()
{
$.ajax({
url: '@Url.Action("EditContact", "Contacts")',
type: 'get',
//Here I am using model
**data:{contactID:@Model.ContactID}**
}).done(function(partialView)
{
$('#sidePanel').html(partialView);
})
})
</script>
您可以让您的 #edit
标记包含必要的 url:
<div id="edit" data-url="@Url.Action("EditContact", "Contacts", new { contactID = Model.ContactID })">
Click me for the fun stuff
</div>
然后在主布局中包含的单独 javascript 文件中剩下要做的就是:
$('#edit').on('click', function() {
var url = $(this).data('url');
$.ajax({
url: url,
type: 'GET',
}).done(function(partialView) {
$('#sidePanel').html(partialView);
})
});
如您所见,您的 javascript 不再依赖于任何特定于模型的内容 - 它所做的只是依赖于 DOM 中已有的内容。 DOM 中已有的内容是您的局部视图需要处理的内容,以便包含所有必需的详细信息。所以现在你可以将这个 javascript 移动到一个单独的文件中,并利用 js 组合和缩小等功能。当然,你的部分绝对没有任何 javascript.