我需要编写一个移动Web应用程序(MVC),在那里我获得了我需要工作的UI设计,我不确定最佳方法,并且正在寻找任何建议。
简化项目:
然后将此数据写入单个SQL表
我不确定我是否应该:
任何建议都将不胜感激, 标记
答案 0 :(得分:0)
这一切都取决于模特。
案例1:
只有一个数据库表(即一次调查)
如果只有一个数据库表,那么你只需要一个控制器和一个View。
例如:
public class Survey
{
public String Answer1 { get; set; }
public String Answer2 { get; set; }
public String Answer3 { get; set; }
}
视图可以询问第一个问题,并相应地显示相应的字段。因此,只有最终的提交按钮才是HTTP Post
。之前的所有按钮都只执行简单的JavaScript操作。
案例2: 第一个问题用于决定用户应该采取哪种调查。
我将有一个返回初始视图的Action。该视图将HttpPost执行到另一个Action(ShowSurvey
)
public ActionResult Index()
{
return View();
}
[HttpPost]
public async Task<ActionResult> ShowSurvey(string id)
{
switch(id)
{
// display the appropriate View here.
}
}
ShowSurvey
将采用一个参数,您可以使用该参数知道您应该显示哪个调查。此操作将拥有自己的视图/视图。 (如果所有调查问题都相似,则有一种观点。否则,您可能需要获得更多观点)。
这将是我的方法BTW。欢迎批评者!
<强>更新强>
我再次阅读了你的问题,你提到你只有一个SQL表。因此,案例1将是最简单的方法。
显示初始问题。使用JavaScript确定在运行时显示的内容等。用户完成所有问题的回答后,您可以向他显示(或启用)提交按钮,该按钮将执行HTTP Post
回到您的操作并将数据提交到数据库。
PS:我之所以使用调查这个词只是因为问题让我想起了这些:P
答案 1 :(得分:0)
问题是这两者是如何相关的?输入第一个字段的值是否会对第二个字段产生影响?我构建了一些简单的两个字段模型或 - 因为我喜欢传递查看显式结构,我会在包含可用选项列表的模型中添加另一个字段,所以它将是:
public class MySimpleModel{
public int MyNumber{get; set;}
public string MyCategory{get; set;}
public List<string> Categories{get; set;}
}
然后发布控制器(通过常规表单提交或ajax):
public class MyController:Controller{
[HttpGet]
public ActionResult Index(){
return View();
}
[HttpPost]
public ActionResult Index(MySimpleModel model){
if(model==null)
return Index();
if (model.MyNumber>3 && model.MyCategory=="xxx")
return View("View1",model);
//etc.
}
}
关于用户界面 - 使用户友好且合乎逻辑。你没有写过关于要求的任何内容,所以很难建议你:)