【问题标题】:Posting Textarea to Controller (currently null is being passed) - MVC将 Textarea 发布到控制器(当前正在传递 null) - MVC
【发布时间】:2013-05-22 20:31:11
【问题描述】:

我正在创建一个网站,用户将在其中填写文本区域(以回答问题),然后按下一步。当他们按下下一步时,文本区域将被提交给控制器并检索下一个问题(我还将将答案存储在 cookie 中)。不幸的是,当我在调试中运行代码时,我意识到 textarea 没有被提交 b/c 参数为空。我试图弄清楚,我环顾四周,似乎做得很好。希望这是一个简单的修复。非常感谢您的宝贵时间!

控制器:

// POST: /Question/1 
[HttpPost]
public ActionResult q(string textAnswer) {
    if (textAnswer != null)
        ViewBag.current++;

    Question q = db.Questions.Find(ViewBag.current);
    if (q == null) {
        return RedirectToAction("submit");
    }

    return View(q);
}

查看:

<form class="form-horizontal" id="myForm" method="post" enctype="text/plain" name="input">

    <p>
        <h3>Question <span id="integer">@ViewBag.current</span></h3>
        @Html.DisplayFor(model => model.Ques)
    </p>

    <div class="control-group">
        <label class="control-label">Answer</label>
        <div class="controls">
            <textarea rows="20" style="width:600px" id="textAnswer"></textarea>
        </div>
    </div>

    <div class="control-group">
        <div class="controls" >
            <button onclick="history.back()" type="button" class="btn">Back</button>
            <input type="submit" class="btn" value="Next" />
        </div>
    </div>

</form>

【问题讨论】:

  • 尝试添加一个带有名称的普通输入元素,看看是否会发布。

标签: asp.net-mvc post controller


【解决方案1】:

您的文本区域需要一个名称才能发布。

<textarea rows="20" style="width:600px" id="textAnswer" name="textAnswer"></textarea>

同时从表单中删除 enctype 属性。

【讨论】:

  • 我修改了我的代码,但由于某种原因它仍在传递 Null...我也尝试更改表单的名称,但 textarea 仍然没有通过。非常感谢您的及时回复!
  • 尝试删除您的enctype 属性。我建议这样做只是因为除非我尝试发布文件数据,否则我从未指定该属性。
  • 非常感谢!这就是需要做的。祝你有美好的一天!
【解决方案2】:

文本区域不发布字符串,它们发布字符串数组
你的控制器应该有这个签名:

public ActionResult q(string[] textAnswer)

【讨论】:

    猜你喜欢
    • 2016-11-17
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多