В одном из моих представлений ASP.NET MVC 4 я использую данные модели для установки значений различных элементов HTML. Я могу использовать эту модель в представлении для отображения таких значений, как:
<div>@Model.Category.Name</div> etc...
Но один из тегов div <div id="DivTotalCost"></div>
должен отображать общую стоимость всех продуктов во всех категориях. Поэтому в конце представления у меня есть следующий код сценария, чтобы установить значение этого тега DivTotalCost. Но следующий код не устанавливает это значение. Я поставил инструкцию оповещения для проверки значения и отобразится предупреждение:
function(){
return total;
}
Посмотреть:
@model MyMVC_app.Models.ProductDetails
<div>@Model.Category.Name</div> etc...
<div id="DivTotalCost"></div>
@section scripts{
@Scripts.Render("~/bundles/jqueryval")
@Scripts.Render("~/bundles/jqueryui")
<script type="text/javascript">
$(document).ready(function () {
var TotalCost = function () {
@if(Model.ProductCategoryList != null)
{
var total = "";
foreach(var item in Model.ProductCategoryList)
{
foreach(var product in @item.products)
{
total += product.price;
}
}
}
return total;
}
alert(TotalCost);
$('#DivTotalCost').text(TotalCost);
});
</script>
}
Пожалуйста помоги.
Thanks..Nam
Сначала: отображается предупреждение
function(){
return total;
}
потому что вы передаете функцию самостоятельно, нет ее результата. Ваше предупреждение (и назначение текста div) должно использовать результат функции, как это
alert(TotalCost());
теперь, внутри функции, в которой вы смешиваете бритву и javascript, и оба - разные вещи и работают в разное время каждый, поэтому вы должны настроить свой код как это (не тестировалось, но вы можете получить идею)
$(document).ready(function () {
var TotalCost = function () {
@{
var total = 0;
if(Model.ProductCategoryList != null)
{
foreach(var item in Model.ProductCategoryList)
{
foreach(var product in @item.products)
{
total += product.price;
}
}
}
}//end of razor block
return @total;
}
});
Вы также можете создать ViewModel и добавить к нему эту логику, на всякий случай, если вы готовы попробовать другой подход