-1

我做了这种代码艺术,但我遇到了问题

  • 查询更新不起作用,我不知道为什么
  • 我总是被重定向到年龄索引文件 Edit.cshtml
 @model DATA2.User
     @{ViewBag.Title = "Edit";
         Layout = "~/Views/Shared/_General.cshtml";
     }
     @using (Html.BeginForm("Save", "Administration"))
     {
     <table>
     <tr>
         <td><label    >                             </label></td>
                 <td>
                    <label  title= "Name "  style="font-weight:bold" >             Name                 </label>
                    </td>
                    <td><label  title= "Email "  style="font-weight:bold" >             Email                
 </label></td>
                     <td><label  title= "Password " style="font-weight:bold"  >             Password                
 </label></td>
                     <td><label  title= "Phone"  style="font-weight:bold" >             Phone                
 </label></td>
                   </tr>
                  <tr >
                          <td><label  style="font-weight:bold"  >            Recent                 </label></td>
                         <td><label    >             @Model.ContactName                 </label></td>
                    <td><label    >             @Model.ContactEmail                 </label></td>
                     <td><label    >             @Model.Password                 </label></td>
                     <td><label    >             @Model.ContactPhone                 </label></td>
                        </tr>
                <tr>
                <td><label   style="font-weight:bold" >            New                 </label></td>  
                    <td><input id="nom" name= "Pseudo" style="width: 156px"/></td>     
                    <td><input id="mail" name= "Pseudo" style="width: 156px"/></td>      
                     <td><input id="mot" name= "Pseudo" style="width: 156px"/></td>  
                     <td><input id="phone" name= "Pseudo" style="width: 156px"/></td>
                </tr>
                  <tr>
                  <td><label  id="id"  style="visibility:hidden" >@Model.Identification</label></td>
                  <td><input type="submit" value="Modify"     style="width: 156px; position:relative" /></td>
                   </tr>
      </table>

}

动作保存:

public ActionResult Save(string id, string nom, string mail, string phone, string mot)
        {

          if(c.UpdateUser(id, (c.GetPassword().Count + 1).ToString(), mot, "", nom, phone, mail))   return RedirectToAction("Admin", "Administration");
          else return RedirectToAction("Index", "Administration"); 

        }

方法更新用户

public bool UpdateUser(string identification, string acc, string mot, string notify, string nom, string phone, string mail)
       {
          if ((!String.IsNullOrEmpty(identification)) && (!String.IsNullOrEmpty(acc)) && (!String.IsNullOrEmpty(nom)) && (!String.IsNullOrEmpty(mail)) && !(String.IsNullOrEmpty(mot)) && Email_Exist(mail) == -1)
               {
                   using (NHibernate.ISession nhSession = User.OpenSession())
                   {
                       nhSession.Transaction.Begin();
                       User u = new User() { Account = acc, Identification = identification, ContactEmail = mail, ContactName = nom, ContactPhone = phone, NotifyEmail = notify, Password = mot };
                       nhSession.Update(u);
                       nhSession.Transaction.Commit();
                       nhSession.Close();
                       return true;
                   }
               }
               return false;}

我总是被重定向到页面索引,为什么?

4

1 回答 1

0

通常您会首先从 NHibernate 加载对象,然后更改该实例中的属性。您还对 NHibernate 进行了一些无用的调用:

using (NHibernate.ISession nhSession = User.OpenSession())
using (var trans = nhSession.BeginTransaction())
{
    User u = nhSession.Get<User>(id);

    // Now update non-identifier fields as you wish.

    // Since the instance is already known by NH, the following
    // is enough (with default NH settings) to persist the changes.
    trans.Commit();
}

return true;

无需在会话上调用 Close(),因为这是由 using 语句处理的。此外,在 User 类上调用 OpenSession() 看起来非常奇怪——它不属于你的数据表示类。

于 2012-09-21T08:59:28.690 回答