0

我有 2 种方法:加法和减法。我希望当单击添加按钮时,第三个文本框显示 A + B 的结果;单击“减去”按钮,第三个文本框显示 A - B 的结果。

我认为这应该是一件简单的事情(因为它可以在 ASP.NET WebForm 应用程序中的几行代码内完成)。但是试了很多次,问了几个朋友,还是没找到解决办法……

@using (Html.BeginForm("Add", "MyMVC"))
{
    <ol>
        <li>
            @Html.TextAreaFor(m => m.A)
        </li>
        <li><span>+ </span></li>
        <li>
            @Html.TextAreaFor(m => m.B)
        </li>
        <li><span>= </span></li>
        <li>
            @Html.TextAreaFor(m => m.C)
        </li>
    </ol>
    @{
    Html.RenderAction("Calculate", "MyMVC");
    }
    @{
    Html.RenderAction("Subtract", "MyMVC");
    }
}
4

2 回答 2

1

不需要 RenderAction 标签。BeginForm 扩展还需要呈现一个发布到自身的表单元素。

将您的视图更改为

@model SampleMvc.Models.SumModel

@using (Html.BeginForm())
{
    <ol>
        <li>
            @Html.TextAreaFor(m => m.A)
        </li>
        <li><span>+ </span></li>
        <li>
            @Html.TextAreaFor(m => m.B)
        </li>
        <li><span>= </span></li>
        <li>
            @Html.TextAreaFor(m => m.C)
        </li>
    </ol>
    <input type="submit" id="add" name="Calculate" value="Add" />
    <input type="submit" id="subtract" name="Calculate" value="Subtract" />
}

注意提交输入上的 name 属性,这将使默认模型绑定器绑定到名为 Calculate 的属性。

为您查看模型使用类似于

public class SumModel {
        public int A { get; set; } 
        public int B { get; set; } 
        public int C { get; private set; }
        public string Calculate { get; set; }

        public void RunCalculation() {
            if (Calculate.Equals("add",StringComparison.InvariantCultureIgnoreCase)) {
                C = A + B;
            } else {
                C = A - B;
            }
        }
    }

然后在控制器中有类似的动作:

public ActionResult Calculate() {
        return View();
    }

[HttpPost]
public ActionResult Calculate(SumModel sumModel) {
    sumModel.RunCalculation();

    return View(sumModel);
}

当表单通过提交输入上的点击事件提交时,按钮的值将自动神奇地绑定到 SumModel 的 Calculate 属性。

然后,当调用 RunCalculation 方法时,它使用该属性来计算针对值 A 和 B 运行哪个操作

于 2013-01-24T04:00:04.817 回答
0

其他简单的方法是,您可以为按钮使用相同的名称。然后在控制器中读取它。

<input type="submit" id="add" name="buttonclicked" value="Add" />
<input type="submit" id="subtract" name="buttonclicked" value="Subtract" />


[HttpPost]
public ActionResult Index(string buttonclicked, SumModel sumModel) {
if(buttonclicked=="add"){

}
else{

}
}
于 2013-01-28T22:09:42.817 回答