【问题标题】:Asp.net MVC Increment ButtonAsp.net MVC 增量按钮
【发布时间】:2012-07-14 09:07:18
【问题描述】:

在 Asp.Net MVC 中,我想在每次提交表单时增加一个模型属性(单击按钮)。

我已经尝试过 HttpGet 和 HttpPost。使用 HttpGet,该值始终被查询字符串覆盖,并且始终为 0。使用 HttpPost,该值从 0 开始,我单击按钮并递增到 1。但是当我再次单击它时,它以 0 的形式出现并递增到 1。

据我了解,它 Inputs 0, 0+1 = 1, Outputs 0

为了简单起见:

@using (Html.BeginForm())
{
    @Html.HiddenFor(x=>x.Value) or @Html.Hidden("Value", Model.Value)
    or even <input type="hidden" value="@Model.Value" />
    <input type="submit" value="Click Me" />
}

public ViewResult ActionMethod(Model model)
{
    model.Value++;
    return View(model);
}

我的问题基本上是这样的: Increment number per button click C# ASP.NET 但在 MVC 框架中。

您如何像这样操作模型属性?我不想使用 Javascript。

【问题讨论】:

  • 信不信由你,我敢说 JQuery 可能是你最好的解决方案。这只是一件非常简单的事情,可以在客户端轻松完成
  • 您更新的解决方案是唯一的方法。 MVC 将使用发布的值来更新您的视图,因此您必须清除它们。

标签: asp.net-mvc button increment


【解决方案1】:

据我所知,这是唯一的解决方案:

我发现这行得通,但它真的很糟糕

int temp = ++model.Value;
ModelState.Remove("Value");
model.Value = temp;

如果我将模型参数传递给视图,视图应该通过获取模型当前状态中传递的任何内容来绑定该参数。

【讨论】:

    【解决方案2】:

    你必须打电话

    UpdateModel(model); 
    

    IIRC。

    【讨论】:

    • ASP.NET MVC 没有。
    • 我希望它会那么容易,但我不能让它做任何不同的事情。有特定的时间你必须打电话给那个吗?根据我的阅读,UpdateModel 用于在控制器中绑定模型。根据我的观察,那部分很好。是视图没有更新。
    • 我没有时间做一个工作示例,但是 IIRC:当您完成更新时调用 UpdateModel(model)。然后像你一样调用 return View(model) 。在黑暗中刺伤:尝试 model.Value += 1;或model.Value = model.Value + 1;另外:使用 Fiddler 检查您的 Web 服务器中的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    相关资源
    最近更新 更多