0


私は MVC の初心者で、プロジェクトに問題があります。私がやろうとしているのは、ユーザーが編集可能なレンタカー用のプラットフォームです。私のプロジェクトでは、次のようなオプションが必要です。

  • データベースに車を追加する
  • データベース内のすべての車のドロップダウン リストを使用して、新しいレンタカー リクエストを追加する
  • 登録/ログイン
  • データベース内の車ごとのレンタル要求の履歴を表示する

プロジェクトは、Entity Framework を使用した *.sdf データベースに基づいています。Models/ ディレクトリにクラス ファイルを作成しました。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace MVC4.Models
{
   public class Car
   {
     public int ID {get; set;}
     public string Make {get; set;}
     public string Model {get; set;}
     public virtual ICollection<Car> Cars{ get; set; }
   }

   public class Request
   {
     public int ID {get; set;}
     public string User {get; set;}
     public int CarID{ get; set; }
     public virtual Car Car { get; set; }
   }

   public class CarDBContext : DbContext
   {
     public DbSet<Car> Cars { get; set; }
     public DbSet<Request> Requests { get; set; }
   }
}

コントローラ:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC4.Models;

namespace MVC4.Controllers
{ 
public class RequestController : Controller
{
    private CarDBContext db = new Car1DBContext();

    //
    // GET: /Request/

    public ViewResult Index()
    {
        return View(db.Requests.ToList());
    }

    //
    // GET: /Request/Details/5

    public ViewResult Details(int id)
    {
        Wypozyczenie1 Request = db.Requests.Find(id);
        return View(request);
    }

    //
    // GET: /Request/Create

    public ActionResult Create()
    {
        return View();
    } 

    //
    // POST: /Request/Create

    [HttpPost]
    public ActionResult Create(Request request)
    {
        if (ModelState.IsValid)
        {
            db.Requests.Add(request);
            db.SaveChanges();
            return RedirectToAction("Index");  
        }

        return View(request);
    }

    //
    // GET: /Request/Edit/5

    public ActionResult Edit(int id)
    {
        Request request= db.Requests.Find(id);
        return View(request);
    }

    //
    // POST: /Request/Edit/5

    [HttpPost]
    public ActionResult Edit(Request requests)
    {
        if (ModelState.IsValid)
        {
            db.Entry(request).State = EntityState.Modified;
            db.SaveChanges();
            return RedirectToAction("Index");
        }
        return View(request);
    }

    //
    // GET: /Request/Delete/5

    public ActionResult Delete(int id)
    {
        Request request= db.Requests.Find(id);
        return View(request);
    }

    //
    // POST: /Request/Delete/5

    [HttpPost, ActionName("Delete")]
    public ActionResult DeleteConfirmed(int id)
    {            
        Request request = db.Requests.Find(id);
        db.Requests.Remove(request);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    protected override void Dispose(bool disposing)
    {
        db.Dispose();
        base.Dispose(disposing);
    }
}
}

リクエスト ビューを作成します。

........

 <div class="editor-field">
    ViewBag.PossibleCategories = context.Cars;
@Html.DropDownListFor(model => model.ID,
    ((IEnumerable<MVC4.Models.Car>)ViewBag.PossibleCategories)
    .Select(option => new SelectListItem {
    Text = (option == null ? "None" : option.Make), 
    Value = option.ID.ToString(),
    Selected = (Model != null) && (option.ID == Model.CarID)
}), "Choose...")
@Html.ValidationMessageFor(model => model.CarID)

</div>
..........

これは私にとってはうまくいきません。このドロップダウンに入力して、このビューがデータベースにデータを挿入できるようにする方法は? ご協力いただきありがとうございます。私はこれに何時間も費やしましたが、理解できません。私の英語で申し訳ありませんが、皆さんが私を理解してくれることを願っています.

エラーが発生します:

Value cannot be null.
Parameter name: source.


Description: An unhandled exception occurred during the execution of the 
current web request. Please review the stack trace for more 
information about the error and where it originated in the code. 

Exception Details: System.ArgumentNullException: Value cannot be null.
Parameter name: source

Source Error: 


Line 32:         <div class="editor-field">
Line 33:         ViewBag.PossibleCategories = context.Cars;
Line 34:     @Html.DropDownListFor(model => model.ID,
Line 35:         ((IEnumerable<MVC6.Models.Car>)ViewBag.PossibleCategories)
Line 36:         .Select(option => new SelectListItem {

これは私のリクエスト/ビューです:

@model IEnumerable<MVC6.Models.Request>

@{
ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
@Html.ActionLink("Create New", "Create")
</p>
<table>
<tr>
    <th>
        User
    </th>
    <th>
        Car
    </th>
    <th></th>
</tr>

@foreach (var item in Model) {
<tr>
    <td>
        @Html.DisplayFor(modelItem => item.User)
    </td>
    <td>
        @Html.DisplayFor(modelItem => item.Car.Make)
    </td>
    <td>
        @Html.ActionLink("Edit", "Edit", new { id=item.ID }) |
        @Html.ActionLink("Details", "Details", new { id=item.ID }) |
        @Html.ActionLink("Delete", "Delete", new { id=item.ID })
    </td>
</tr>
}

</table>
4

2 に答える 2

0

ASP.NETMVC3Razorでのレンタカーアプリケーションの作成から少し学ぶことができます。

于 2012-06-21T12:54:02.043 に答える