-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"); 

        }

メソッドUpdateUser

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 に答える