我有一个令人满意的表单,我正在尝试从一个将由Action方法处理的表单进行POST,但我的POST数据为空。
我首先定义我的表单:
<form class="composer-form" name="input" action="~/Articles/ResearchArticles/ArticleSubmit" method="post" onsubmit="return SubmitForm()">
@RenderPage("text-editor-partial.cshtml")
<textarea id="hidden_text_area" style="display: none"></textarea>
<div style="padding-left: 2em">
<input class="btn" type="submit" value="Submit" style="width: 200px">
</div>
如上面的代码所示,SubmitForm函数将处理复制可编辑内容的值,如下所示:
function SubmitForm() {
var clr = confirm("Are you sure you want to submit the article?");
if (clr == true) {
var hta = document.getElementById("hidden_text_area");
var content_html = document.getElementById("editor").innerHTML;
hta.value = content_html;
return true;
}
else {
return false;
}
}
代码成功从contenteditable div中获取值并将其放入隐藏文本值字段中。 所以现在我有一个行动,我从这里得到:
[HttpPost]
public ActionResult ArticleSubmit(string postData)
{
return new EmptyResult(); //postData is NULL... why?
}
设置断点显示postData为null ...我的愚蠢错误是什么:)?
谢谢!
答案 0 :(得分:0)
可能的解决方案是使用隐藏的input
代替textarea
,因为它没有value
,实际上内容存储在text
中。
所以在HTML中:
<input id="hidden_input" style="display: none" name="data" />
在控制器中:
public ActionResult ArticleSubmit(string data)
{
}
答案 1 :(得分:0)
您的textarea需要name
,否则当您提交表单时,模型活页夹不会获取其值:
<textarea id="hidden_text_area" style="display: none" name="postData"></textarea>