我的网站有一个简单的表格,允许输入订单详细信息。我想最初显示一个“计算价格”按钮。仅在计算出价格后,才显示“下订单”按钮。
我的观点如下:
@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”使用的动词。
希望有人会对我猜想一定是相当常见的用例有一个巧妙的解决方案,计算价格/下订单?