對不起,如果我的問題太基本了,我只是新的MVC沒有經驗的JavaScript。MVC計算字段和字段格式
1 - 我想添加計算領域在我看來沒有成功 我有下面的類
public class TaxCalculation
{
[Required]
[DisplayName("Init")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]
public double InitVlaue { get; set; }
[Required]
[DisplayName("Reg")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]
public double RegValue { get; set; }
[DisplayName("Enga")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]
public double InitEnga
{
get { return CommonComputation.CalcuEnga(InitVlaue, RegValue); }
}
}
CommonComputation.CalcuEnga功能:
public static double CalcuEnga(double InitVlaue, double RegValue)
{
double V_Et = (0.02 * 0.225 - 1) * Math.Log(0.225/(100 - 0.225));
double V_En = (0.02 * 0.711 - 1) * Math.Log(0.711/(100 - 0.711));
double mk = Math.Round(RegValue/InitVlaue * 100, 3);
double V_Ep = (0.02 * InitVlaue - 1) * Math.Log(InitVlaue/(100 - InitVlaue));
double F = Math.Round((InitVlaue - 0.225)/(0.711 - 0.225), 5);
double S = Math.Round(((V_Ep) + (F - 1) * V_Et - F * V_En), 5);
double ceq = Math.Round(F + 1.53 * S, 5);
return Math.Round(mk * ceq, 3);
}
我的看法是
<div class="editor-label">
@Html.LabelFor(model => model.InitVlaue)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.InitVlaue,new {style="width:50px;"})
@Html.ValidationMessageFor(model => model.InitVlaue)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.RegValue)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.RegValue,new {style="width:50px;"})
@Html.ValidationMessageFor(model => model.RegValue)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.InitEnga)
</div>
<div class="editor-field">
@Html.TextBoxFor(x=> x.InitEnga,new {name="initEngaTextBox",style="width:50px;",@readonly="readonly"})
@Html.ValidationMessageFor(model => model.InitEnga)
</div>
Iwant當用戶鍵入任何前2個字段(InitVlaue
或RegValue
) 提交的InitEnga
得到更新 我試圖直接添加該字段或調用執行計算沒有成功的函數。 我搜索並找到1000年的答案使用的東西像阿賈克斯,淘汰賽...等 我沒有任何經驗與JavaScript的經驗。 有沒有簡單的方法來解決這個問題?
2-在所有的文本框,雖然我指定的格式[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:#.#}")]
,我仍然看到值0,任何想法是什麼錯?
非常感謝
首先,當你使用EditorFor()和DisplayFor()時,你的'DisplayFormatAttribute'只有在使用' TextBoxFor()')。其次,如果您想對客戶端事件做出反應,那麼您需要使用javascript/jquery –
使用純服務器端MVC無法實現此目的。如果您想在動態更新前兩個字段時重新計算第三個值,則需要使用javascript。如果執行計算的函數是服務器端函數,則需要將這些值發送到可以通過AJAX實現的服務器。所以我建議你開始學習JavaScript,如果你不熟悉它。 –
C#中的MVC代碼在服務器上執行,而不是在客戶端中執行。因此,當您更改其他2的值時,第三個不會更新,因爲沒有進行服務器調用。 您需要的是簡單的Javascript,它將在客戶端執行計算或將更改的值發送回服務器,並獲取更新的值並在UI中顯示更新的值。 因爲這對我來說看起來像簡單的計算,我會建議使用javascript在客戶端上執行計算器。 – Daredevil