单击提交按钮后输出空值

时间:2014-11-02 23:34:13

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

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

但是我得到了null

a.aaa需要" stackOverflow" [HttpPost]

中的字符串
  

控制器代码

 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" />
}

3 个答案:

答案 0 :(得分:0)

什么是[HttpPost]?

您应该在Request["aaa"]

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

这段代码应该可以肯定,你可以尝试一下!

答案 1 :(得分:0)

这适合我。在return View();方法的ActionResult Index(Class1 a)行设置断点。

这应该表明a的{​​{1}}属性值为stackOverflow

如果您无法复制此行为,请澄清您期望的行为。

Breakpoint

答案 2 :(得分:0)

我建议通过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

进行操作