ASP.net MVC是否可以修改视图中的类对象?

时间:2017-01-14 22:30:04

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我是新手,并创建了一个网站,您可以在其中创建自己的自定义quizes。我创建了一个数据库,用于存储一个类对象mytests,它包含一个名称和一个问题列表参数。

public class MyTests
{
    public int ID { get; set; }
    public string name { get; set; }
    public string description { get; set; }
    public List<MyQuestions> AllTestQuestions;

}

//使用此对象提问

public class MyQuestions
{
    public string QuestionDescription { get; set; }
    public string MultipleChoiceCorrect { get; set; }
    public string MultipleChoiceB { get; set; }
    public string MultipleChoiceC { get; set; }
    public string MultipleChoiceD { get; set; }
    public string Answerexplanation { get; set; }

}

我使用visual studio生成的默认数据库代码。将测试对象(mytest)添加到数据库中没有问题,但我想要做的是在edit.cshtml视图中我希望能够在将对象保存到数据库之前将元素添加到问题列表中。

问题是我不知道如何从视图中编辑模型对象,或者甚至可能。我可以让它通过重定向工作吗?但我认为直接从视图中添加元素会更容易。是否可以从视图中修改视图中的model.object(将安全问题放在一边)?

例如model.title = something; 要么 model.list.add()

这样的事情可能吗?

如果这个问题不明确,请告诉我,我会在评论中澄清。

2 个答案:

答案 0 :(得分:1)

是的,可以在视图中编辑模型。

在.cshtml文件中使用@model声明指定视图模型,然后像这样编辑模型:

@model Namespace.For.MyTests

@Model.name = "Hello World";

<p>@Model.name</p>

虽然这会起作用,但它并不是真正的观点,所以我不推荐它。

视图是关于呈现您的数据,而不是改变它 - 应该在控制器或域层中完成。一旦用户离开页面,由于Web的无状态特性,您的更改将丢失(.NET MVC将数据从控制器传递到视图,然后结束请求)。

答案 1 :(得分:0)

这应该在控制器级别完成。你可以在一个视图上做到这一点,但它不是视图的用途。

您的问题是,如果页面刷新,您将丢失内容,因此,如果您确实想要刷新页面,则需要一种在保存信息之前临时保存信息的方式。

另外,我还考虑重命名你的课程和#34; MyTests&#34;到&#34; MyTest&#34; (单数)和&#34; MyQuestions&#34;对于&#34; MyQuestion&#34; ...这只是一种很好的做法,因为那时你会有一个单身人士名单和#34; MyQuestion&#34;在&#34; MyTest&#34;。 EntityFramework Codefirst将在创建/更新数据库时将名称复数化。