2017-07-28 83 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动作。我可以从数据库中检索数据以使用相同的表单。

<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> 

那就是我的视图也。那么我如何更新我的记录?另外我从数据库中首先使用实体​​框架工作代码。我在编码方面真的很新颖。如果你帮我做实习项目,我会很高兴。

回答

-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 –