我有一个包含以下字段的表格,我使用EF创建了一个模型:
Event Details
EventMngID
Event_name
Event_location
Event_Date
EM_opt1Question1
EM_opt1Answer1
EM_opt1Question2
EM_opt1Answer2
EM_opt1Question3
EM_opt1Answer3
EM_opt1Question4
EM_opt1Answer4
我有一个页面显示事件信息和自定义问题,他们分开。如您所见,第二个图像具有“编辑选择”操作链接。单击编辑时,将显示一个显示答案的弹出窗口。从弹出窗口我可以修改值并保存答案。所有更改都应反映在自定义问题部门的“答案字段”下拉列表中。我的问题是,使用的机制是什么,因为该表包含4个答案字段 如果我会在弹出窗口(代码下面)中这样做,那么Answer2.4会怎么样?我相信它会引发错误。有关如何解决此问题的任何帮助,或者如果有与我的问题相关的链接,请发送给我。
<div class="editor-field">
<%: Html.TextBoxFor(model => model.Answer1) %>
<%: Html.ValidationMessageFor(model => model.Answer1) %>
</div>
答案 0 :(得分:0)
我看到它的方式,你有两种选择。
第一个(我认为不是最好的选择)是找出正在编辑的问题和答案编号并动态生成您的查询。我不确定你是否正在使用像Entity Framework这样的ORM,但如果你是,那么你需要有一些if / elseif语句,如下所示:
if (editing question 1)
return (query to get question and answer 1)
else if (editing question 2)
return (query to get question and answer 2)
另一方面,如果您只是动态编写SQL查询并使用ADO.NET,则可以更轻松地生成查询文本。同样,我不推荐这个解决方案。
更好的解决方案是规范化数据库并将问题和答案分成自己的表,而不是将它们放入EventDetails表中。您需要从表中删除每个EM_opt1QuestionX和EM_opt1AnswerX列,并创建一个具有以下结构的新表:
QuestionAnswer
--------
QuestionAnswerID
EventMngID
Question
Answer
然后每个问题和答案都有自己的ID,这使您可以轻松地定位给定记录。这也允许您根据需要提供尽可能多的问题和答案,而无需尝试猜测所需的最大问题数量。