2017-07-28 6 views
-1

同じフォームで問題を追加して更新したい。 Here is the "SAYFA EKLE" that form. It means "Add New Page"in english.ページの詳細を更新するにはどうすればよいですか? C#でmvc5を使用する

public ActionResult Insert(Pages pages, string parent, string optactive) 

    { 
    Pages pages_ = new Pages(); 

     pages_.pageName = pages.pageName; 
     pages_.pageURL = pages.pageURL; 
     if (optactive == "on") pages_.isActive = true; 
     else pages_.isActive = false; 
     pages_.orderNumber = pages.orderNumber; 

     int parid = 0; 
     try 
     { 
      parid = Convert.ToInt32(parent); 
     } 
     catch 
     { 

     } 
     pages_.parentId = parid; 

     if (parid == 0) pages_.levelNumber = 0; 
     else 
     { 
      var partemp = db.Pages.Where(o => o.id == 
    parid).FirstOrDefault(); 
      if (partemp.levelNumber == 0) pages_.levelNumber = 1; 
      else pages_.levelNumber = 2; 
     } 

    db.Pages.Add(pages_); 
     db.SaveChanges(); 
     return Redirect(Url.Content("~/Page/")); 
    } 

は、ここに私の追加アクションです。それはうまくいく。

[HttpGet] 
    private ActionResult EditPost(string pageId) 
    { 

     var id = Convert.ToInt32(pageId); //Edit Action 
     var tmppage = db.Pages.Where(o => o.id == id).First(); 
     ViewBag.tmppage = tmppage; 
     ViewBag.pages = returnPages(); 

     return View("Index"); 
    } 

これも私のEditPostアクションです。私は同じフォームを使用するためにdatabasからデータを取得することができます。

<div class="panel panel-success"> 
     <div class="panel-heading text-center">SAYFA EKLE</div> 
     <div class="panel-body"> 

      <form action="~/Page/Insert" method="post"> 
       <table class="table table-bordered table-striped table- 
hover"> 
<tr> 
    <td>Sayfa Adı</td> 
    <td><input type="text" class="form-control" name="pageName" 
placeholder="Sayfa ismini giriniz" value="@if (ViewBag.tmppage != null) { 
@ViewBag.tmppage.pageName } " required/></td> 
</tr> 
<tr> 
    <td>Sayfa Adresi</td> 
    <td><input type="text" class="form-control" name="pageURL" 
placeholder="Sayfa adresini giriniz" required/></td> 
</tr> 

<tr> 
    <td>Aktif/Pasif</td> 
    <td> 
     <label class="radio-inline"> 
      <input type="radio" name="optactive" value="on" required>Aktif 
     </label> 
     <label class="radio-inline"> 
      <input type="radio" name="optactive" value="off" required>Pasif 
     </label> 

    </tr> 

Thats my viewもあります。それで私の記録を更新するには?また、データベースからのエンティティフレーム作業コードを最初に使用しています。私はコーディングで本当に新しいです。私がインターンシッププロジェクトを手伝ってくれたら嬉しく思います。

答えて

-1

まずは、ここでMVCの原則を完全に忘れてしまった。それをもっと試してみてください。

ビューでフォームとモデルを使用している場合は、操作の前に[HttpPost]が必要です。

[HttpPost] // this 
public ActionResult Insert (Pages pages) 
{ 
     Pages pages_ = new Pages(); 
     .... 

getメソッドはint値を受け入れることができます。なぜ文字列を使用していますか?

[HttpGet] 
private ActionResult EditPost(int? pageId) 
{ 
    if (pageId == null) 
     ...do somrthing; 

    ViewBag.tmppage = db.Pages.FirstOrDefault(o => o.id == pageId); 
    ViewBag.pages = returnPages(); 

    return View("Index"); 
} 

あなたのビューには、あなたのケースでページするモデルがあります。 FORMタグは異なって見えるはずです。

@model Pages // your first line in the view 
    ... 
    <form asp-action="Insert" asp-controller="Pages"> 
     <input asp-for="pageName" class="" /> 
     <input asp-for="isActive" class="" /> 
     .... and etc. 

これは部分的な回答です。ドキュメントを読むのにちょっと時間を費やすだけです。しかし、私はこのビデオを見ることをお勧めします、彼らは短いですが、非常に非常にあなたのために良いです。

https://www.youtube.com/playlist?list=PLYMOUCVo86jFPCV6_u2m8P2NE2LSijvLN

+0

これはMVC 5である場合は、なぜあなたは 'ASP-action'と' ASP-controller'を使用していますか? – mason

+0

MVC5にはタグヘルパーがあるためです。そしてあなたはそれらを使うことができます。私を信じて、あなたはそれらを愛するでしょう。 –

+0

https://forums.asp.net/t/2039284.aspx?What+is+the+advantage+of+using+Tag+Helpers+in+ASP+Net+MVC+5 –

関連する問題