0

我的网站有一个简单的表格,允许输入订单详细信息。我想最初显示一个“计算价格”按钮。仅在计算出价格后,才显示“下订单”按钮。

我的观点如下:

@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”使用的动词。

希望有人会对我猜想一定是相当常见的用例有一个巧妙的解决方案,计算价格/下订单?

4

2 回答 2

1

仔细看看这个,我想它会对你有所帮助:你如何在 ASP.NET MVC Framework 中处理多个提交按钮?听起来您有多个提交按钮问题。

于 2013-08-05T11:34:45.203 回答
0

尝试使用onclick 的onsubmit 事件insteat 并添加return 语句。新按钮会像

<input type="submit" value="Calculate Price" onsubmit="return setCalculatePriceOn();" />

和javascript函数将是

function setCalculatePriceOn() {
    jQuery("#CalculatePrice").val('true');
    return true;
}

function setCalculatePriceOff() {
    jQuery("#CalculatePrice").val('false');
    return true;
}

这将确保隐藏字段的值在表单提交之前更新。

于 2013-08-04T20:53:43.833 回答