0

私はMVC4から始めたばかりで、複数の部分ビューを1つのページに配置しようとしていますが、すべての部分が異なるデータを持つと想定されていますが、ボタンをクリックするとすべての部分が表示されるデータが1つだけの部分が常に表示されます。

これはビューコードです:

            <section id="comments">
            <h3>Comments</h3>
             @{

                 foreach (MvcApplication4.Models.comment item in postComments)
                 {
                            <article>

                                 <p>@item.body</p>

              using (Html.BeginForm("Delete", null, new { id = item.ID ,pid = item.idPost}, FormMethod.Post))
                 {
                     @Html.HttpMethodOverride(HttpVerbs.Delete)
                      <button type="submit" class="button delete" >Delete</button>
                                          }

                  <section>
                        <button type="submit" class="button Edit"  id="edit" onclick="return showHide();"  >Edit</button>

                        <div  id="partial" hidden="hidden">
                              @Html.Partial("editCom",item)
                            </div>
                  </section>
               }
           }
             </article>

         }
       }
       </section>

これは showhide パーシャルです:

 <script type="text/javascript" language="javascript">// <![CDATA[
       function showHide() { 
           var ele = document.getElementById("partial");
           if(ele.style.display == "block") {
               ele.style.display = "none";
           }
           else {
               ele.style.display = "block";
           }
       }
       // ]]></script>

これは部分的です:

@using MvcApplication4.Models
@model MvcApplication4.Models.comment       


    @{comment com = Model;
        }
            @using (Html.BeginForm("Edit", null,new{ pid=com.idPost,cid=com.ID}, FormMethod.Post))
                                              {
                <fieldset>
                           <div class="editor-label">
            @Html.LabelFor(x => com.user)
        </div>
        <div class="editor-field">
             @Html.LabelFor(x => com.user,Session["username"].ToString())
            @Html.ValidationMessageFor(x => com.user)
        </div>

        <div class="editor-label">
            @Html.LabelFor(x => com.email)
        </div>
        <div class="editor-field">
            @Html.EditorFor(x => com.email,com.email)
            @Html.ValidationMessageFor(x => com.email)
        </div>

        <div class="editor-label">
            @Html.LabelFor(x => com.url)
        </div>
        <div class="editor-field">
            @Html.EditorFor(x => com.url,com.url)
            @Html.ValidationMessageFor(x => com.url)
        </div>
         <div class="editor-label">
         @Html.LabelFor(x => com.body)
        </div>

         <div class="editor-field">
          @Html.EditorFor(x => com.body,com.body)
           @Html.ValidationMessageFor(x => com.body)
        </div>
                    <p>
            <input type="submit" value="save"  /> 

        </p>   
                </fieldset>
   }
4

1 に答える 1

0

あなたのコード

<div  id="partial" hidden="hidden">
    @Html.Partial("editCom",item)
</div>

ボタンによって制御されるセクションを決定します。

var ele = document.getElementById("partial");
if(ele.style.display == "block") {
    ele.style.display = "none";
}
....

「partial」という同じ ID を持ついくつかのセクションをすべて生成してから、何らかの一意の ID なしで管理する div をボタンが決定することを期待しています。getElementById("partial")

代わりに、それぞれに一意の ID を生成<div>し、JavaScript メソッドで同じ ID を使用する必要があります。getElementById()

于 2013-01-10T21:17:33.850 に答える