[英]How to pass the div value not part of model to backend controller method
問題:我想在UI中有一個div,並且希望通過JQuery在其中呈現一些值,並且當我提交表單時,我應該能夠在后端訪問它。
視圖:
@model ScheduleAptMV
using (Html.BeginForm())
{
////// I want a div here /////
@Html.LabelFor(model => model.FirstName })
@Html.EditorFor(model => model.FirstName)
<input type="submit" value="Make Appointment"/>
}
}
模型:
public class ScheduleAptMV
{
public string FirstName {get; set;}
}
控制器:
[HttpPost]
public ActionResult SaveDelayedPayment(ScheduleAptMV data)
{
// I want to be able to access the Div text too
}
部分解決方案1:
我添加了一個div
<div id="totalAmount"></div>
並用Jquery我添加了類似
$("#totalAmount").text("HelloFoo");
但是我的問題是它不依賴於模型,因此如何將其發送到后端。
部分解決方案2:
我可以在模型中創建一個屬性 ,該屬性將表示該div內容,從而使其牢固地綁定。 此值僅用於顯示, 不應允許用戶編輯它,而應由Jquery代碼呈現。 我可以用
@Html.DisplayFor()
如下所示:
新模型:
public class ScheduleAptMV
{
public string FirstName {get; set;}
public decimal totalAmount{get; set;}
}
新視圖:
<span class="myClass">
@Html.DisplayFor(model => model.totalAmount)
</span>
問題:但是現在如何使用Jquery 呈現此屬性。 我是否需要使用DisplayFor
以外的其他工具。
編輯:這是DisplayFor
當前呈現的方式。
<span class="myClass">
0.00
</span>
問題:如果我遵循第2部分,那么如何將類附加到DisplayFor
Element。
解決方案1
將您的動作簽名更改為
public ActionResult SaveDelayedPayment(ScheduleAptMV data, int totalAmount)
但是,它必須是POSTable實體,例如文本框, 而不是 div。 因此,添加一個隱藏的輸入:
<input type='hidden' name='totalAmount' id='totalAmount'/>
<div id='totalAmountDisplay'></div>
並據此設置:
$("#totalAmountDisplay").text("1024");
$("#totalAmount").val(1024);
解決方案2
與解決方案1相似,您只需要一個隱藏的輸入即可將其發布:
@Html.HiddenFor(m => m.totalAmount)
確保在<form>
,並且它將被自動綁定。 使用.DisplayFor
添加顯示,或者使用其他類似的方法和jquery進行更新(如果需要),類似於上述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.