【问题标题】:How to create view and action for item automatically?如何自动为项目创建视图和操作?
【发布时间】:2015-09-10 22:13:31
【问题描述】:

我正在开发一个食谱网络应用程序。用户创建了一个食谱,Web 应用程序将这个食谱放入数据库。我正在主页上通过 foreach 循环展示这个食谱:

foreach (var item in Model)
{
 <div id="anItem">
     <div id="imgText"><img align="left" src="../../Content/Images/eggs.png" height="150" width="90"></div>
    <div id="text">@item.Text</div>
 </div>                     
}

但是,它不方便,因为它只是许多食谱的大列表。我想要的是每个食谱都有一个单独的页面。

因此,当用户创建食谱时,应该创建一些页面(或操作?)。但是,我不知道如何自动创建操作方法及其视图。

也许有一些机制可以自动创建视图和操作?

我的问题是: 当用户创建(添加)新项目(配方)到我的数据库时,如何创建视图及其操作方法。 我也想有一个食谱的链接。

任何帮助将不胜感激。

【问题讨论】:

  • 你的视图变成了一个通用的“配方”,你创建了一个控制器,它有一个ID,它在你传入特定配方时呈现通用配方。你只想要一个视图,而不是每个食谱一个。
  • @EricHotinger,您能否分享一些链接或示例。谢谢你!:)
  • 我已经给你一个基本的例子作为下面的答案。您可以根据需要对其进行自定义。

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


【解决方案1】:

这是一个简短示例,说明如何构建通用模型以创建所有配方的总体视图页面、编辑特定配方的详细信息、将它们作为独立的视图查看,以及使用全新的 MVC 5 项目删除它们。

首先,在您的Models 文件夹中创建一个Recipe。确保添加数据注释的引用,以便实体框架知道您的对象的主键。

using System.ComponentModel.DataAnnotations;
namespace RecipeSite.Models
{
    public class Recipe
    {
        [Key]
        public int Identifier { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}

现在构建您的项目。如果您不构建项目并事先尝试脚手架,则 dll 将不同步,并且脚手架可能会失败。

接下来,搭建控制器和视图。在 Visual Studio 中,您可以右键单击 Controllers 文件夹并转到 Add -&gt; Controller -&gt; MVC 5 Controller with views using Entity Framework 选择您的 Recipe 模型和默认的 ApplicationDbContext 命名您的控制器 RecipesController

这就是您要拥有一个功能齐全的 CRUD 应用程序来管理食谱名称和描述的全部内容。

这就是您自动生成所需功能的方式。要进一步回答您的原始问题,您可以查看对RecipesControllerDetails 操作是如何实现的。

生成的代码如下:

// GET: Recipes/Details/5
public ActionResult Details(int? id)
{
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    Recipe recipe = db.Recipes.Find(id);
    if (recipe == null)
    {
        return HttpNotFound();
    }
    return View(recipe);
}

如您所见,每当您单击Recipe 的链接时,它都会将其ID 传递给控制器​​,从数据库中查找它,并在可能的情况下找到它。然后它将根据该 ID 在Views 文件夹中显示Details.cshtml 页面。

【讨论】:

    猜你喜欢
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 2018-09-20
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多