【问题标题】:How do I pass clicked button value to the controller using ASP.NET MVC?如何使用 ASP.NET MVC 将单击的按钮值传递给控制器​​?
【发布时间】:2017-06-29 02:40:06
【问题描述】:

当用户从视图/FregihtTool.cshtml 中单击Next 按钮时,我试图将单击的按钮传递给控制器​​

@model ThanksTrucking.Models.Shipping


<h2>FreightTool</h2>


@using (Html.BeginForm("FreightTool", "Shipping")) 

{
    @Html.AntiForgeryToken()

<div class="form-horizontal">
    <h4>Calculator</h4>
    <hr />
    @Html.ValidationSummary(true, "", new { @class = "text-danger" })

    <div row>
        <div class="col-md-12">
            <button class="col-md-3" type="button" id="PrintedMaterials" value="1" class="btn btn-secondary " ng-click="levelOU()">Printed Materials </button>
            <button class="col-md-3" type="button" id="Machinery" value="2" class="btn btn-secondary " ng-click="levelCD()">Machinery</button>
            <button class="col-md-3" type="button" id="PaperGoods" value="3" class="btn btn-secondary " ng-click="levelD()">Paper Goods </button>
            <button class="col-md-3" type="button" id="MetalWood" value="4" class="btn btn-secondary " ng-click="levelF()">Metal & Wood Materials </button>
        </div>
    </div>

    <div class="form-group">
        <div class="col-md-12 text-right">
            <input type="submit" value="Next" class="btn btn-success" />
        </div>
    </div>
</div>

}

现在我的 FreightController 看起来像这样:

// GET: Shipping/FreightTool
    public ActionResult FreightTool()
    {
        return View();
    }

    // Post: Shipping/FreightTool
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult FreightTool(int categoryNum)
    {
        int FreightClass = 0;
        switch (categoryNum)
        {
            case 1:
                FreightClass = 50;
                break;
            case 2:
                FreightClass = 60;
                break;
            case 3:
                FreightClass = 70;
                break;
            case 4:
                FreightClass = 80;
                break;
            default:
                FreightClass = 0;
                break;
        }
        return RedirectToAction("Create", "Shipping", FreightClass);
    }

我想从视图中传递CategoryNum,控制器处理它并告诉它是哪个FreightClass

【问题讨论】:

  • 假设我理解 - 你可能最好使用收音机或复选框(取决于你需要什么)。如果您需要坚持使用button,那么您正在使用Angular,这样您就可以“保留”该值(并且将在客户端/Angular 中类似地处理提交)。 Hth.

标签: asp.net asp.net-mvc twitter-bootstrap razor


【解决方案1】:

为您的按钮命名,例如:

<button class="col-md-3" type="button" id="PrintedMaterials" name="categoryNum" value="1" class="btn btn-secondary " ng-click="levelOU()">Printed Materials </button>

【讨论】:

  • 不..它不起作用..我底部的提交按钮正确吗? &lt;input type="submit" value="Next" name="categoryNum" class="btn btn-success" /&gt;
  • 没有。正如我在回答中所展示的那样:每个按钮的值对应于您的 switch 语句都应该具有该名称。这实际上意味着最终提交按钮是无关紧要的。从按钮发布值的唯一方法是让它也提交。如果您不想在用户单击其中一个选项时立即提交,那么您需要改用无线电控件之类的东西。
猜你喜欢
  • 2021-08-16
  • 2014-04-08
  • 2014-03-26
  • 2020-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多