【发布时间】:2014-12-17 21:28:28
【问题描述】:
注意:我现在是一名前端开发人员,戴着 .Net 开发人员的帽子。可笑,我知道,但我是如何落入这个烂摊子的并不是这个问题的重点。排除了免责声明,这就是正在发生的事情。
正如标题所示,我需要将一个相当长的 HTML 字符串(如在多页文本中)从视图传递给控制器。我花了最近几天研究实现这一目标的各种方法。 TBH,有些事情是有道理的,而有些事情没有。
这是我在查看中的代码片段:
var html =
"<form id='htmlContent' action='" + customUrl + "' method='post'>" +
"<input type='hidden' name='content' id='contentStr'>" +
"</form>";
// string literal html gets appended to some element...
$("#htmlContent").submit();
我想在这里指出几点:
- 我在这里使用字符串文字来构造表单,因为此 DOM 需要在某些时候动态附加到其他元素。
- 我是否使用有效的 HTML 字符串是不可能的。我已经单独测试了它的有效性,一切看起来都很好。
- 我有意使用 jQuery 的
submit()方法而不是使用Ajax调用。
控制器:
[HttpPost]
public ActionResult ParseHtml(FormCollection form)
{
string htmlStr = form["content"].ToString();
....
// some code in between, but the first line appears to be causing an error or
// the value is not being retrieved.
....
return new EmptyResult();
}
我知道我是在 MVC 框架的上下文中工作的,并且我有点理解它的概念。但是,以我非常有限的知识知道如何实现它是另一回事(尤其是当你从一个早已离开你的项目的人那里继承了一个糟糕的代码库时!)
我想这很简单,也很容易做到,但我转动轮子的时间比我想要的要长得多。任何指向正确方向的指针将不胜感激。
【问题讨论】:
-
“一切看起来都很好”是一些非常好的遗言!在这种情况下,您的模型是什么?
-
@CBauer - 更不用说,“但它可以在我的机器上运行!”顺便说一句,我没有为此特定代码创建的任何模型。
-
对于输入类型,你有值吗?如果没有输入值,我不确定这将如何工作。
-
是否必须将其附加到 DOM 中,还是可以隐藏在其中并在程序执行期间使其可见?
-
@SurgeonofDeath - 不确定我是否理解正确,但我确实有一个正确分配给输入字段的值(html 字符串)。
标签: c# forms model-view-controller