我的網站有一個簡單的表單,允許輸入訂單詳細信息。我想首先顯示一個「計算價格」按鈕。只有計算了一次價格後,纔會顯示「下單」按鈕。MVC 4計算價格/訂單訂單模式
我有我的看法如下:
@using (Html.BeginForm("PlaceOrder", "Order"))
{
<div id="OrderEntry" class="listWithoutBullets">
<ul>
<li>Name: @Html.TextBoxFor(m => Model.Name)</li>
<li>Address Line 1: @Html.TextBoxFor(m => Model.Address1)</li>
<li>Address Line 2: @Html.TextBoxFor(m => Model.Address2)</li>
<li>Postcode: @Html.TextBoxFor(m => Model.Postcode)</li>
<li>Number of Single Photos: @Html.TextBoxFor(m => Model.SinglePhotos)</li>
<li>Number of Show Boxes Filled with Photos: @Html.TextBoxFor(m => Model.ShoeBoxes)</li>
<li>Require Digital Images on DVD: @Html.CheckBoxFor(m => Model.DVD)</li>
<li>Require Digital Images on USB Memory Stick: @Html.CheckBoxFor(m => Model.USBMemory)</li>
<li>Discount Code: @Html.TextBoxFor(m => Model.DiscountCode)</li>
</ul>
</div>
<div id="OrderPricing">
<ul>
<li>Total Exc VAT: £@Html.DisplayFor(m => Model.TotalExcVat,null,"lblTotalExcVat")</li>
<li>Total Inc VAT: £@Html.DisplayFor(m => Model.TotalIncVat,null,"lblTotalIncVat")</li>
</ul>
</div>
@Html.HiddenFor(m => Model.CalculatePrice);
if (Model == null)
{
<input type="submit" value="Calculate Price" onclick="setCalculatePriceOn" />
}
else
{
if (Model.TotalExcVat > 0)
{
<input type="submit" value="Place Order" onclick="setCalculatePriceOff" />
<input type="submit" value="Calculate Price" onclick="setCalculatePriceOn" />
}
else
{
<input type="submit" value="Calculate Price" onclick="setCalculatePriceOn" />
}
}
}
爲了設置隱藏布爾模型場「CalcualtePrice」我增加了以下Java腳本(我什麼都不知道關於Java腳本):
<script type="text/javascript">
function setCalculatePriceOn() {
jQuery("#CalculatePrice").val('true');
}
function setCalculatePriceOff() {
jQuery("#CalculatePrice").val('false');
}
JavaScript,我只是簡單地添加在我的cshtml文件的腳。
在控制器內,我檢查是否設置了「CalculatePrice」的模型布爾值字段,以決定用戶是否嘗試計算價格或下訂單。
我的問題是,Java腳本似乎並沒有得到運行。我是否需要將它綁定到點擊事件?現在整個cshtml頁面看起來過於複雜和凌亂,因爲我試圖解決提交計算和放置順序的問題。我最初試圖通過檢查控制器中的http動詞來解決這個問題(GET用於計算價格,PUT用於下訂單),但我似乎無法覆蓋「Html.BeginForm」所使用的動詞,取決於哪個按鈕被點擊。
希望有人會有一個整潔的解決方案,我猜一定是一個相當常見的用例,計算價格/地點順序?
仔細看看這個,我認爲它會幫助你:http://stackoverflow.com/questions/442704/how-do-you-handle-multiple-submit-buttons-in-asp-net-mvc -framework聽起來就像你有一個多重提交按鈕問題。 –
謝謝傑森,我確實有多重提交按鈕問題,並找到您建議的鏈接上的解決方案。 –
將我的評論移到答案中,以便更一致。 –