【问题标题】:Update Values in Database - MVC更新数据库中的值 - MVC
【发布时间】:2013-09-04 13:43:41
【问题描述】:

我使用可排序的 jquery 插件,因为我希望用户可以选择图像在我的视图中显示的顺序。

为此,我有一个 Get Controller,它将数据发送到我的 PartialView。

如何让现在的 Post Controller 更新我的数据库中的表?

注意:此时控制器不会收到任何数据。我还没弄清楚是什么问题

有人可以帮我解决这个问题吗?

提前致谢:

这是我的代码:

在我的部分视图中:

@(Html.BeginForm("UpdateOrder", "Admin", FormMethod.Post)){
            <div id="Order">
                <ul id="sortable">

                    @foreach (var p in ViewBag.Images)
                    {           
                        <li id="@Html.AttributeEncode(p.FileName)">
                            <img src="~/Files/@p.FileName"/>
                        </li>
                     }
                </ul>
            </div>
         }

控制器:

if (ModelState.IsValid)
{
    using (SqlConnection cn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString))
    {
         SqlCommand cmd;
         System.Text.StringBuilder sql = new System.Text.StringBuilder();
         sql.Append("Update Image Set MyFileName=??? Order By ASC");

         cn.Open();
         cmd = new SqlCommand(sql.ToString(), cn);
         cmd.Parameters.Add(??????????).Value = ;

         cmd.ExecuteNonQuery();

         cn.Close();
     }
}      
return View();

【问题讨论】:

  • 为什么不使用像实体框架这样的 ORM..

标签: c# mysql asp.net sql asp.net-mvc


【解决方案1】:

你在寻找这样的东西吗?

SqlCommand comm = new SqlCommand("UPDATE Customers SET Name=@name WHERE ID=@id", con;
comm.Parameters.AddWithValue("@name", "John");
comm.Parameters.AddWithValue("@id", id);

要从视图向控制器传递数据,请查看以下链接:
ASP.NET MVC 3 Razor: Passing Data from View to Controller
ASP.Net MVC Passing multiple parameters to a view

我已经为一个网站创建了一个后端,例如可以添加、编辑、删除事件。所以事件视图中的 sn-p 如下所示:

<div id="tabs-2" class="ui-widget-content">
    <h2>
        Events</h2>
    <p>
        @Html.ActionLink("Create new Event", "EventCreate")
    </p>
    <table id="tableEvent">
        <tr>
            <th>
                Event
            </th>
            <th>
                Date
            </th>
            <th>
                Day of the Week
            </th>
            <th>
            </th>
        </tr>
        @foreach (var e in ViewBag.Events)
        {
            <tr id="@e.EventID">
                <td>
                    <h4>@e.EventName</h4>
                </td>
                <td>
                    <h4>@string.Format("{0:d}", e.Datum)</h4>
                </td>
                <td>
                    <h4>@e.Tag</h4>
                </td>
                <td>
                    @Html.ActionLink("Löschen", "EventDelete", new { id = e.EventID })
                </td>
            </tr>
        }
    </table>
</div>

我在 ActionLink 中将 id 传递给控制器​​并调用 EventDelete:

[Authorize]
public ActionResult EventDelete(int id)
{
    repevent.Delete(id);
    return RedirectToAction("Main");
}

现在我有了活动的 ID,可以做任何我想做的事。 (在我的情况下,我删除了具有关联 ID 的事件。

public void Delete(int id)
{
    using (KiGaDBEntities db = new KiGaDBEntities())
    {
        Event event = db.Event.SingleOrDefault(e => e.EventID == id);
        if (event != null)
        {
            db.Event.Remove(event);
            db.SaveChanges();
        }
    }
}

希望对你有帮助!

【讨论】:

  • 我遇到的问题是控制器没有收到任何数据
  • 抱歉,我现在不能准确地告诉你它是如何工作的,但我想我的笔记本电脑上有一个这样的例子,我可以看看它并尝试提供帮助你的问题。
  • 同时你可以看看我在我的答案中编辑的链接,也许它对你有帮助!
  • 是的..这就是我正在做的..谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
相关资源
最近更新 更多