2016-05-22 6 views
0

ASP.NET MVC/C#でデータベースに値(文字列)を挿入する際に問題があります。私は何をすべきか分からずに立ち往生しています。 ?ASP.NET MVC C#で値をデータベースに追加する

@using (Html.BeginForm("Index", "Upload", FormMethod.Post)) 
      { 
       @Html.Label("Name:") 
       @Html.TextBox("name", null, new { @class = "form-control"}) 

       @Html.Label("Surname:") 
       @Html.TextBox("surname", null, new { @class = "form-control" }) 

       @Html.Label("Email:") 
       @Html.TextBox("email", null, new { @class = "form-control" }) 

       @Html.Label("Description:") 
       @Html.TextArea("description", null, new { @class = "form-control" }) 

       <br/> 
       <input type="submit" class="btn btn-primary" value="Send" /> 
      } 

私のモデルは、あなたがこのような何かを持っている必要があり

namespace GikStore.Models { 
    public class ContactModels 
    { 
    } 
} 

は、私は、コントローラで何もする必要はありません:-(...空であるUploadControllerで

+0

@model ProjectName.Models.Contact @using (Html.BeginForm("Index", "Upload", FormMethod.Post)) { @Html.Label("Name:") @Html.TextBoxFor("name", null, new { @class = "form-control"}) @Html.Label("Surname:") @Html.TextBoxFor("surname", null, new { @class = "form-control" }) @Html.Label("Email:") @Html.TextBoxFor("email", null, new { @class = "form-control" }) @Html.Label("Description:") @Html.TextBoxFor("description", null, new { @class = "form-control" }) <br/> <input type="submit" class="btn btn-primary" value="Send" /> } 

あなたのコントローラは、ビューにモデルを送信することになっています。 *「コントローラで何かする必要はありますか?」* Index Controllerのアップロードアクションは何をしますか?ポピュレートされたモデルを表示用のビューに送信する必要があります。 – Veverke

+1

あなたのモデルは何ですか?投稿するコントローラメソッドは何ですか? –

+0

TextBox&Labelの代わりにTextBoxFor(x => x.Name)&LabelFor(x => x.Name)を使用すると、@Krasimirは正しく答えてくれました。もっと役立つでしょう。 –

答えて

1

[HttpGet] 
    public ActionResult Index() 
    { 
     return View(new ContactModels()); 
    } 
    [HttpPost, Admin] 
    public ActionResult Index(ContactModels model) 
    { 

     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 

     //Call a service that saves to database 

     return RedirectToAction("ListOfContacts"); 
    } 

RedirectToAction("ListOfContacts");は単なる例であり、任意のアクションとコントロールにリダイレクトできますエル。

あなたのモデルは、このようなものになります。

public class Contact 
{ 
public string name { get; set; } 
public string surname { get; set; } 
public string email { get; set; } 
public string description { get; set; } 
} 

変更ビュー

@model.Contact 
    @using (Html.BeginForm("Index", "Upload", FormMethod.Post)) 
     { 
      @Html.Label("Name:") 
      @Html.TextBoxFor(m=>m.name, new { @class = "form-control"}) 

      @Html.Label("Surname:") 
      @Html.TextBoxFor(m=>m.surname, new { @class = "form-control" }) 

      @Html.Label("Email:") 
      @Html.TextBoxFor(m=>m.email, new { @class = "form-control" }) 

      @Html.Label("Description:") 
      @Html.TextAreaFor(m=>m.description, new { @class = "form-control" }) 

      <br/> 
      <input type="submit" class="btn btn-primary" value="Send" /> 
     } 

その後、データを保存するために、コントローラにpostメソッドを追加するモデルクラスを作成します

public class ContactModels 
{ 
    public string name { get; set; } 
    public string surname { get; set; } 
    public string email { get; set; } 
    public string description { get; set; } 
} 
+0

ありがとう!私は戻り値をチェックし、彼らは働きます。今私はそれをアップロードする部分を欠いている(それら)。私は私のコントローラでそれを行うと推測する – GikGamer

+0

はい。 ''データベースに保存するサービスを呼び出す 'というコメントを書いたところで、保存を行うべきコードを挿入するべきです。 Entity Framework、Ado.NETまたはNHibernateのデータベースへの接続方法に依存します。コントローラ内でこれらの接続を直接操作することは望ましくありません。その代わりに、データベース接続やさまざまな操作を処理するサービス(たとえばContactService)を記述する必要があります。 ContactServiceはUpload、Delete、Getメソッドなどを持つことができ、Controllerメソッドでそのサービスメソッドを呼び出すだけです。 –

0

ファーストをデータベースへ

ビューで
public class Contact { 
     public string name { get; set; } 
     public string surname { get; set; } 
     [EmailAddress(ErrorMessage = "Invalid Email Address")] 
     public string email { get; set; } 
     public string description{ get; set; }  
    } 

モデル

[httpPost] 
public ActionResult Index(Contact model) 
    { 

    if (!ModelState.IsValid) 
    { 
     //write the code that saves to database 
    } 



    return View(); 
} 
0

(テキストボックス=> TextBoxFor)コントローラ

[httpPost] 
public ActionResult Index(Contact model) 
    { 

    if (!ModelState.IsValid) 
    { 

    }  

    return View(); 
} 
関連する問題