【问题标题】:How can I update my page details ? in c# with mvc5如何更新我的页面详细信息?在 c# 中使用 mvc5
【发布时间】:2018-01-04 15:49:58
【问题描述】:

我想在同一个表单上添加和更新问题。 Here is the "SAYFA EKLE" that form. It means "Add New Page"in english.

    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>

这也是我的观点。那么如何更新我的记录?另外,我首先从数据库中使用实体框架代码。我对编码真的很陌生。如果你能帮我完成我的实习项目,我会很高兴的。

【问题讨论】:

    标签: c# asp.net html ef-code-first asp.net-mvc-5


    【解决方案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

    【讨论】:

    • 如果这是 MVC 5,为什么要使用 asp-action 和 asp-controller?
    • 因为 MVC5 有标签助手。你可以使用它们。相信我,你会爱上他们的。
    • 您链接到的论坛帖子与 MVC 5 无关。OP 弄错了。 MVC 5 没有标签助手。
    • 标签助手在 MVC 5 中可用。谷歌一下。但是,如果您需要解决方案,则取决于您。任何方法都有不同的方法来解决问题。我只提供了其中之一。不必是最简单和最好的。
    猜你喜欢
    • 2014-07-17
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    相关资源
    最近更新 更多