C# 尝试使用传统的asp.net MVC、Razor和EF实现单页功能

C# 尝试使用传统的asp.net MVC、Razor和EF实现单页功能,c#,asp.net-mvc,entity-framework,single-page-application,C#,Asp.net Mvc,Entity Framework,Single Page Application,我只是想让你们中的一些人来做这件事。VS 2012中MVC 4项目的默认支架假定您的列表、详细信息、创建、编辑和删除页面都是分开的 我创建了一个页面,用于处理主模型实体及其相关实体的所有这些函数 让我有点担心的是我是如何分割这个功能的 用户通过如下div与页面交互 <div id="createtrace">click</div> 这似乎合理吗?我是不是在对路由引擎进行混蛋化?重新创建控制盘?您最好只为每个操作创建一个操作。将JavaScript发布到适当的URL,如/

我只是想让你们中的一些人来做这件事。VS 2012中MVC 4项目的默认支架假定您的列表、详细信息、创建、编辑和删除页面都是分开的

我创建了一个页面,用于处理主模型实体及其相关实体的所有这些函数

让我有点担心的是我是如何分割这个功能的

用户通过如下div与页面交互

<div id="createtrace">click</div>

这似乎合理吗?我是不是在对路由引擎进行混蛋化?重新创建控制盘?

您最好只为每个操作创建一个操作。将JavaScript发布到适当的URL,如/CreateTrace/

目标是什么?始终使用相同的Url,还是没有重新加载页面或其他内容?我的背景是web表单。我可以使用listview来处理实体的生命周期—创建、编辑、删除。会有一个页面刷新,但您仍然可以保持在同一页面上。mvc模型似乎想要将交互分离到不同的视图中——我想要一个视图。记下联系记录。我想要一个新的a按钮以及现有记录的列表。当我点击一条记录时,我希望它在那里显示详细信息,可编辑,以及该联系人的电话号码列表,我可以从中添加、编辑和删除。如果你想要一个视图,而不关心URL/刷新-只需使用一个视图。。。除了(
返回视图(“MyOnlyView”);
)之外,我不确定问题是什么……问题是我缺乏MVC/路由方面的经验。我现在明白了这个问题,是的,我可以使用默认路由。谢谢这是有道理的,这是我最初尝试的,但我认为我必须返回一个同名的视图。。。我再看一看。我的错误是试图返回视图而不指定视图名称。我的操作名称不必与视图名称匹配,只要我提供了我希望它使用的视图名称。
$("#createtrace").click(function () {
    $('<input />').attr('type', 'hidden')
          .attr('name', "action")
          .attr('value', "ct")
          .appendTo('#frm');
    $("#frm").submit();
});
string action = Request.Form["action"].ToString();
switch (action)
{
    case "ct":
        trace trace = new trace();
        trace.bookingid = vwbooking.bookings.bookingid;
        if (ModelState.IsValid)
        {
            db.traces.Add(trace);
            db.SaveChanges();
        }
        break;
    case "ut":
        vwbooking.traces.ToList().ForEach(
            t =>
            {
                db.traces.Attach(t);
                db.Entry(t).State = EntityState.Modified;
            }
            );
        db.SaveChanges();
    break;
 }