代码之家  ›  专栏  ›  技术社区  ›  Saqib

ASP.NET MVC中一个视图上的多个窗体,同时保留验证

  •  2
  • Saqib  · 技术社区  · 15 年前

    在我制作的供内部使用的小型Web应用程序中,我希望用户能够选择要打开的数据文件之一。我有一个强类型视图,它将文件列表作为模型。

    我的初始版本有一个索引操作,它获取数据文件列表并返回视图,然后是创建新文件的创建操作,以及上载现有文件的上载操作。但是,在这两种情况下,仅仅为一个文本框和按钮创建一个完整的新页面都是一种糟糕的用户体验,因此我在索引视图中添加了两个表单,一个指向创建,另一个指向上载,都使用了post动词。

    这是非常好的工作,加上仍然保持良好的URL命名-即使创建/上传没有uis。问题是,在这两个动作结束时,我会 返回RedirectToAction(“index”); 它依次获取要显示的数据并显示视图-精细。但我没有得到证实。为了使validationSummary和validationMessage帮助程序正常工作,我需要将post操作调用为与get操作(本例中为index)相同的操作。我更改了所有内容,这样我只有一个get/post索引操作,以及post操作中的if语句来查看按钮是创建还是上载。但这似乎是一个比我最初提出的更笨拙的解决方案。

    当然,另一个选择是为创建/上传创建视图,每个视图都有一个文本框——但我宁愿使用笨拙的代码,而不是笨拙的用户界面。

    我是否遗漏了什么,或者这就是MVC验证框架的设计方式。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Mathias F    15 年前

    看起来你真的希望这个应用程序只有一个页面,所有的事情都会发生。 那条缝很合理,因为它很小。 在这种情况下,我将坚持您的一个操作,因为验证是开箱即用的。

    另一个选项是在上传/创建索引时将错误消息放入tempdata中(通过将它们放入modelstate)。