在控制器操作中呈现HTML

时间:2011-01-31 13:19:44

标签: jquery asp.net-mvc ajax asp.net-mvc-2

我无法确定在控制器操作中构造HTML是否可以,并且从我的视图(使用jquery)将此HTML提供回AJAX调用。

例如,当通过jQuery Autocomplete选择客户端时,除了获取所选的客户端ID之外,我们还需要为其构建显示或编辑表单。 我们可能会:

  1. 有几十个占位符div具有正确的ID并从控制器操作中接收Client JSON对象,然后用我们对象中的内容更新这些div(非常容易出错,很多IF在我们的JS代码等),
  2. 或者代替请求Client JSON对象而不是请求准备好的HTML并将其插入到视图中(更有吸引力的解决方案,逻辑被移动到控制器中并且易于维护 - 我宁愿维护C#代码而不是JS )。
  3. 你认为这些是有效的选择吗?大多数现代应用程序做什么?

    1. 虽然2.将完美地用于客户端的显示形式,它是否适用于编辑? Eedit表单应该包含HTML input控件,因为我希望将客户端属性发回,因为当它们被发布回控制器时,我可以用它们实现一个viewmodel。

3 个答案:

答案 0 :(得分:2)

控制器几乎从不意味着这样做。

解决方案是:

  • 使用特定视图(部分)来实现此目的
  • 使用jquery / JavaScript
  • 发回JSON并在客户端构建标记
  • 创建自定义HTML帮助程序以吐出必要的标记和脚本。

我个人会选择3然后选择2。

答案 1 :(得分:0)

你能不能只使用Ajax表单吗?

1:通过jquery提交表单。

2:根据您作为参数传入的内容查找并返回部分视图。

3:更新相关的div。

答案 2 :(得分:0)

您的控制器将数据传递到您的视图,不是HTML

我个人会使用PartialViews,jQuery Load() functionality根据提供的数据加载这些部分视图。