簡體   English   中英

如何將不屬於模型的div值傳遞給后端控制器方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM