【问题标题】:Null value output after clicking submit button点击提交按钮后输出空值
【发布时间】:2014-12-29 14:34:16
【问题描述】:

我希望将按钮的值接收到 a.aaa

但我得到了 null

a.aaa 需要是 [HttpPost] 中的 "stackOverflow" 字符串

控制器代码

 public class DefaultController : Controller
        {
            // GET: Default
            public ActionResult Index()
            {
                return View();
            }

            [HttpPost]
            public ActionResult Index(Class1 a)
            {
                return View();
            }
        }

型号

namespace WebApplication3.Models
{
    public class Class1
    {
        public string aaa { get; set; }
    }
}

查看

@model WebApplication3.Models.Class1

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>
@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
     <button type="button" name="aaa" id="aaa" value="stackOverflow">pressMe</button>
     <input type="submit" />
}

【问题讨论】:

  • 您在此处发布的代码很好(在我的项目中对其进行了测试,属性aaa 的值在回发时为stackOverflow)。
  • 我改一行写成
  • button 不是回发控件!
  • 以及为什么我需要在输入类型中执行 Request["aaa"] 这个示例工作并将值插入到没有 Request["aaa"] 的模型中
  • 那么我如何传递按钮值并给它一个名称,如按钮 html 控件,输入控件的值也是名称

标签: c# html asp.net-mvc-5


【解决方案1】:

这对我来说是正确的。在ActionResult Index(Class1 a) 方法的return View(); 行设置断点。

这应该表明a 的属性aaa 包含stackOverflow 的值。

如果您无法复制此行为,请说明您所期望的行为。

【讨论】:

    【解决方案2】:

    什么是[HttpPost]?

    你应该在Request["aaa"]中找到值

    @using (Html.BeginForm("Index", "DefaultController ", FormMethod.Post))
    {
        <p>
            @Html.TextBox("aaa", "stackOverflow")
            <input type="submit" value="Text" />
        </p>
    }
    

    这段代码肯定能用,你可以试试!

    【讨论】:

      【解决方案3】:

      我建议通过 javascript/ajax 实现

      在您的 html 正文中

      <a href="javascript:void(0)" onclick="myJsFunc('aaa');">Press Me</a>
      

      在您的 html 脚本中

      function myJsFunc(somedata) {
          $.ajax({
              type: 'POST',
              contentType: 'application/json',
              url: '/DefaultController/Index',
              data: { 'somedata' : somedata },
              success: function(result) {
                           //do something
                       }
              error: function (errorData) {alert(errorData);}
          });
      };
      

      在你的控制器中

      [HttpPost]    
      public ActionResult Index(string somedata)
      {
            if(somedata == "aaa")
            {
                  //do something
            }
            return Json("successData");
       }
      

      然后使用 css 将链接样式化为按钮。

      或者用输入替换你的按钮,然后按照这些examples

      【讨论】:

        猜你喜欢
        • 2016-07-07
        • 2021-09-10
        • 2013-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-19
        • 2015-07-25
        • 1970-01-01
        相关资源
        最近更新 更多