2017-02-04 4 views
1

Не удалось найти ответ, который работал, поэтому я снова задаю этот вопрос. Я использую Visual Studio с MVC5 и Entity Framework для отправки формы. Моя проблема - всякий раз, когда я пытаюсь получить доступ к форме, я получаю сообщение об ошибке «не могу найти ресурс» (он на французском языке на моем экране, я надеюсь, что это правильный перевод). Вот моя архитектура:Не удается найти ресурс MVC Entity Framework

MonLivredor/Контроллеры/HomeController.cs

MonLivredor/View/Home/Formulaire.cshtml

Вот метод я использую в контроллере, чтобы получить отправленные данные из формы :

[HttpPost] 
    public ActionResult Formulaire() 
    { 

     String nom = Request.Form["nom"]; 
     String mail = Request.Form["mail"]; 
     String message = Request.Form["message"]; 

     Commentaire com = new Commentaire(nom, mail, message); 
     context.Liste.Add(com); 
     context.SaveChanges(); 

     return View(context); 

    } 

И, наконец, моя форма, которую я пытаюсь запустить вручную в VS 2015:

<h2>Formulaire</h2> 
<form method="post" action="/Home/Formulaire"> 
    <h2>Nom</h2> 
    <input type="text" id="nom" name="nom"/> 
    <h2>Mail</h2> 
    <input type="text" id="mail" name="mail"/> 
    <h2>Message</h2> 
    <input type="text" id="message" name="message"/> 
</form> 

Только в том случае, может помочь, вот мой Global.asax.cs без каких-либо модификаций:

namespace MonLivredor 
{ 
    public class MvcApplication : System.Web.HttpApplication 
    { 
     protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 
      GlobalConfiguration.Configure(WebApiConfig.Register); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
     } 
    } 
} 

Вот модель Commentaire.cs:

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Linq; 
using System.Web; 

namespace MonLivredor.Models 
{ 
    public class Commentaire 
    { 
     [Key] 
     public int ID { get; set; } 
     public String Nom { get; set; } 
     public String Mail { get; set; } 
     public String Message { get; set; } 
     public DateTime CreateDate { get; set; } 

     public Commentaire(String nom, String mail, String message) 
     { 
      CreateDate = DateTime.Now; 
      this.Nom = nom; 
      this.Mail = mail; 
      this.Message = message; 
     } 

     public Commentaire() 
     { 
     } 


    } 
} 

Извините за избыточную тему, я не мог найти ничего, что сработает. Я попытался изменить свою маршрутизацию, но, похоже, это тоже не помогло. Спасибо за вашу помощь :)

+0

Что такое модель ожидается в _Formulaire.cshtm l_ Просмотреть? – Steve

+0

Это называется Commentaire.cs Я добавлю его –

ответ

0

Вы должны использовать имя тега = "" в вашей форме, как и что:

<h2>Formulaire</h2> 
<form method="post" action="/Home/Formulaire"> 
    <h2>Nom</h2> 
    <input type="text" id="nom" name="nom"/> 
    <h2>Mail</h2> 
    <input type="text" id="mail" name="mail"/> 
    <h2>Message</h2> 
    <input type="text" id="message" name="message"/> 
</form> 

и лучший способ для метода с использованием ModelBinder:

[HttpPost] 
    public ActionResult Formulaire(Commentaire com) 
    { 

     context.Liste.Add(com); 
     context.SaveChanges(); 

     return View(context); 

    } 

и MVC Framework вспомогательные методы для вашей формы:

<h2>Formulaire</h2> 
    @using (Html.Beginform("Formulaire","Home")) 
{ 
     <h2>Nom</h2> 
     @Html.Editor("nom") 
     <h2>Mail</h2> 
     @Html.Editor("mail") 
     <h2>Message</h2> 
     @Html.Editor("message") 

} 
+1

Да, хорошо, также забыл '/' ... –