【问题标题】:MVC ViewModel - Need to define viewmodelMVC ViewModel - 需要定义 viewmodel
【发布时间】:2023-04-08 18:38:01
【问题描述】:

我正在将一份 xml 格式的调查问卷存储到一个名为 Questionnaire 的字符串类型数据字段中。数据库字段是 contactID 和 Questionannire。我在 MVC 应用程序中执行此操作。有人可以告诉我 ViewModel 应该是什么样子吗?

xml想要

<xml>
   <Question>What is your country of origin?/<Question>
   <Answer>United Kingdom </Answer> 
   <Question>What is your place of birth?</Question>
   <Answer>United States </Answer> 
</xml>

【问题讨论】:

  • 视图模型包含您要在视图中显示/编辑的属性,因此无论您要显示/编辑什么,然后创建这些属性。不清楚为什么你有一个 xml 文件而不是将问题和用户答案直接保存到数据库中,所以很难给你答案。
  • 您好,我将其保存为示例的原因是为了避免使用多个表来存储该信息。然后我必须创建一个 Questions 表、 Answers 表和 QuestionAnswer 表。我只是想保持简单,因为我想将它存储在单个列中
  • 你能给我一个例子,说明我的视图模型在上面提到的 xml 结构以及我的数据库表中应该是什么样子
  • 我向你保证,在你的数据库中创建一个表比从你的视图模型属性生成一个 xml 文件,然后将 xml 文件解析回你可以使用的属性要简单得多查看模型。
  • 感谢 Stephen 的建议,但我关于 viewmodel 应该是什么样子的问题尚未得到解答。

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 model-view-controller asp.net-mvc-viewmodel


【解决方案1】:

您的视图模型可能如下所示:

public class VM { public IEnumerable<QA> MyQuestionsAnswers {get;set; } }
//then you need a QA class
public class QA{
   public List<string> Questions {get;set;}
   public List<string> Answers {get;set;}
 }

接下来您需要读取 XML 并将其放入 QA 列表中...

XDocument document = XDocument.Load(@"XMLFile1.xml"); 

var TheQuestions = (from br in document.Descendants("Questions") 
                   select br).ToList();  
var TheAnswers = (from or in document.Descendants("Answers") 
                   select or).ToList(); 
var myQA = new QA{Questions=TheQuestions, Answers=TheAnswers}

【讨论】:

  • 这是一种存储问题和答案的糟糕方式......将它们分成单独的列表,您将失去对象的自然联系。现在你必须让它们保持同步..
  • 同意,但我不想为操作解决整个问题。我正在考虑通过向 Op 展示如何分解他可以完成的问题。也许你可以帮他完成?
  • 除了问题的根源是 XML 的布局。问题和答案都应该包含在一个字段中......
猜你喜欢
  • 1970-01-01
  • 2010-10-20
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多