2011-07-09 3 views
2

В конечном счете, я хотел был бы рассчитать поля, такие как Вес * Цена.MVC3 Razor Html.TextBoxFor Расчетные поля

Предположим, у меня есть на мой взгляд, MVC3:

@Html.TextBoxFor(modelItem => item.Package.USDKg) 
    @Html.HiddenFor(modelItem => item.Pricing.VolumePrice) 

Могу ли я рассчитывать их непосредственно? Или прибегнуть к JQuery? Я бы очень хотел, чтобы цена «скрыта» даже в исходном виде, если это возможно.

В принципе, когда пользователь вводит вес упаковки, будет отображаться цена (рассчитанная на значения скрытых значений цены).

Благодарим вас за руководство.

ответ

2

Имея бритву, вы можете сделать логику только внутри маркировки!

@{ 
    var value = model.Item.Value; 
    var price = model.Item.Proce; 
    var calculated = value * price; 
} 

<div class="price>Your price: @calculated</div> 

Больше информации здесь:

http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx

+0

Спасибо! Это было бы супер, но теперь я сталкиваюсь с «Невозможно назначить лямбда-выражение для неявно типизированной локальной переменной». Здесь есть эссе: http://www.interact-sw.co.uk/iangblog/2008/03/17/lambda-inference, но интересно, были ли какие-либо изменения с тех пор, чтобы облегчить жизнь. – Par6

+0

@ Par6, пожалуйста, внимательно прочитайте сообщение об ошибке и проверьте место, где он указывает. Если вы думаете, что сможете это исправить: если нет, создайте новый вопрос .. если мой ответ вам помог, отметьте его как " верный" –

1

Да, вы могли бы сделать это следующим образом:

function calculate(){ 
    var weight = parseFloat($("#Package_USDKg").val()); 
    var price = parseFloat($("#Pricing_VolumePrice").val()); 
    var calculus = weight * price; 
    $("#calculus").text(calculus); //This shows the calculated field 
} 

$(document).ready(function(){ 
    calculate(); //Calculate on page load 
    $("#Package_USDKg").change(calculate); //Calculate every time weight changes 
}); 

Я предполагаю, что у вас есть DIV с id="calculus", чтобы показать вычисляемое поле.

Надеюсь, это поможет. Cheers

+0

Не высокоочищенного предпочтительнее использовать JS, то вы можете использовать бритву для этого :) –

Смежные вопросы