gpt4 book ai didi

asp.net-mvc - 如何使用 ASP.NET MVC 3 在回发期间保留文本

转载 作者:行者123 更新时间:2023-12-02 00:28:54 25 4
gpt4 key购买 nike

我有一个产品编辑屏幕。用户可以为产品选择供应商。为此,我显示了一个 jQueryUI 对话框,允许他们浏览并选择供应商。当用户选择供应商时,我会更新页面上隐藏的 VendorID 输入,这是我页面模型的一部分。我还使用有关他们选择的供应商的详细信息更新了几个 div。这些仅用于显示目的——只需要 id 来保留选定的供应商。

这一切都工作得很好而且花花公子,除非在回发时出现错误,在这种情况下我会重新显示相同的 View 。 ModelState 负责保留我所有的表单字段(包括隐藏的 VendorID)。但是,我的带有供应商文本的 div(当然)是空的,因为它们没有发布到服务器。

我首先为我的每个供应商显示字段创建隐藏字段并将它们放在模型上。然后隐藏字段在回发后仍然存在,但这并没有解决实际在屏幕上重新显示文本的问题。

我能想到的三个选项是:

  1. 在回发时,如果出现错误,请转到数据库,使用提供的 VendorID 获取供应商,并使用我要显示的文本重新填充模型。
  2. 使用 RenderAction 并执行一个操作来呈现所选供应商的详细信息。
  3. 使用只读文本框而不是 div 来显示供应商详细信息。

这些都不是我觉得很满意的。我觉得我可能缺少一个明显的解决方案。有没有更好的解决方案?

最佳答案

我建议您不要将额外的供应商信息作为主页的一部分。创建一个 javascript 函数 showVendorInfo()。调用时,如果 VendorID 隐藏输入有值,它会通过 AJAX 获取相关的供应商信息并使用 AjaxGetVendorInfo 操作方法显示它。从两个地方调用这个函数:

  • 在 document.ready() 中
  • 在使用 jQueryUI 显示选择供应商之后。

现在,这将在一个 Action 方法中。如果您希望您的用户有延迟问题,您可以执行以下操作以避免某些 ajax 调用:在 View 中检查您是否知道 VendorID;如果是这样,调用 Html.RenderAction 从 View 调用相同的 AjaxGetVendorInfo 操作方法。

这样做的好处是它避免了我发现的一个大禁忌:在您的 ViewModel 中包括仅显示值和模型绑定(bind)值。这使得 ViewModel 非常困惑,尤其是在存在验证错误时。 [进入肥皂盒] 最好让您的 ViewModel 只具有用于模型绑定(bind)的属性,用于您的状态。将列表值、额外显示信息等放入 ViewData 或让它们通过 AJAX 显示。

关于asp.net-mvc - 如何使用 ASP.NET MVC 3 在回发期间保留文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7774908/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com