1

我有一个包含以下字段的表,我使用 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

我有一个页面显示事件信息和自定义问题,它们是分开的。如您所见,第二张图片有一个 Edit Choices 操作链接。当我单击编辑时,它将显示一个显示答案的弹出窗口。从弹出窗口中,我可以修改值并保存答案。所有更改都应反映在自定义问题部门的答案字段下拉列表中。我的问题是,使用的机制是什么,因为表格包含 4 个答案字段,如果我要在弹出窗口(下面的代码)中这样做,那么 Answer2 ..4 呢?我相信它会引发错误。有关如何解决此问题的任何帮助,或者如果有与我的问题相关的链接,请将其发送给我。

     <div class="editor-field">
        <%: Html.TextBoxFor(model => model.Answer1) %>
        <%: Html.ValidationMessageFor(model => model.Answer1) %>
    </div>

活动详情信息

自定义问题

在此处输入图像描述

4

1 回答 1

0

在我看来,你有两个选择。

第一个(我认为这不是最好的选择)是找出正在编辑的问题和答案编号并动态生成您的查询。我不确定你是否使用了一些像实体框架这样的 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,这使您可以轻松地定位给定的记录。这还允许您根据需要拥有尽可能多或尽可能少的问题和答案,而无需尝试猜测所需的最大问题数。

于 2012-05-21T13:39:47.620 回答