在控制器操作中渲染 HTML

发布于 2024-10-15 06:03:30 字数 588 浏览 4 评论 0原文

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

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

  1. 拥有数十个具有正确 ID 的占位符 div,并从控制器操作接收 Client JSON 对象,然后使用我们对象中的内容更新这些 div(非常错误)容易发生,我们的 JS 代码中存在大量 IF 等),
  2. 或者不请求 Client JSON 对象,而是请求准备好的 HTML 并将其插入到视图中(更吸引人的解决方案,逻辑被移动到控制器中并且易于维护 - 我宁愿维护 C# 代码而不是 JS)。

您认为这些是有效的选择吗?大多数现代应用程序有什么作用?

  1. 2. 虽然可以完美地用于客户的显示表单,但它是否可以用于编辑? Eedit 表单应该包含 HTML input 控件,因为我希望将客户端属性回发,因为当它们回发到控制器时,我可以用它们具体化视图模型。

I am having trouble deciding whether it is ok to construct HTML in controller actions and provide this HTML back to AJAX calls from my view (using jquery).

For instance, when selecting a client via jQuery Autocomplete, besides just getting the selected client ID we also need to construct a display or edit form for it.
We might:

  1. Have like dozens of placeholder divs with proper IDs and receive Client JSON object from out controller action and then update those divs with the content from our object (very error prone, lots of IFs in our JS code, etc.),
  2. or instead of requesting for a Client JSON object rather request the prepared HTML and just insert it into the view (more appealing solution, logic is moved into controller and easiear to maintain - I rather maintain C# code than JS).

Do you think these are valid options? What do most modern apps do?

  1. While 2. will work perfectly for client's display form will it work for edit for?. Eedit form should contain HTML input controls because I want client properties to be POSTed back because when they are posted back to the controller I can materialize a viewmodel with them.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

鹿港小镇 2024-10-22 06:03:30

控制器几乎从来没有打算这样做。

解决方案是:

  • 使用特定视图(无论是部分视图)来实现此目的
  • 发送回 JSON 并使用 jquery/JavaScript 在客户端构造标签
  • 创建一个自定义 HTML 帮助器来吐出必要的标签和脚本。

我个人会选择3然后2。

Controller is almost never meant to do that.

Solutions are:

  • Use a particular view (be it partial) to achieve this
  • Send back JSON and construct tags on the client side using jquery/JavaScript
  • Create a custom HTML Helper to spit out necessary tags and script.

I would personally choose 3 and then 2.

眼泪都笑了 2024-10-22 06:03:30

您的控制器应该传递数据到您的视图,而不是html

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

Your controller should pass data to your view, not html.

I personally would make use of PartialViews, and jQuery Load() functionality to load those partial views based on the data supplied.

埖埖迣鎅 2024-10-22 06:03:30

您不能仅使用 Ajax 表单来实现此目的吗?

1:通过jquery提交表单。

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

3:更新相关div。

Can you not just use an Ajax form for this?

i.e

1: submit the form via jquery.

2: find and return a partial view based on whatever you're passing in as a parameter.

3: update the relevant div.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文