0

別のビューの中に部分的なビューがあります。部分ビューは「ログオン」部分です。そして私はjquery検証を使用しています。添付画像をご覧ください。

ここに画像の説明を入力してください ここでの要件は、すでにサインアップしている人がユーザー名/パスワードを入力して次のページに進むことです。(ログオン部分ビュー)そしてまだサインアップしていない人は、eメール/パスワード/フルネームを入力して次のページに進みます。(メインビューで)

メインビューには、いくつかの必須フィールドがあります。例:メール、パスワードなど。問題は、ログオン部分ビューにユーザー名/パスワードを入力すると、続行できないことです。メインビューの必須フィールドにエラーが表示されます。

そして、これはIEでのみ発生します。FFとCromeでは、希望どおりに機能します。

この場合どうするか考えてみませんか?

コード:ログオン部分:

<script src="<%: Url.Content("~/Scripts/jquery.validate.min.js") %>"    type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js") %>"     type="text/javascript"></script>

<% using (Html.BeginForm("LogOn", "Account", new { returnUrl =     Request.QueryString["returnUrl"] }))
 { %>

<div>
        <div class="editor-label">
            <%:Html.Label("Email") %>

        </div>
        <div class="editor-field">

             <%:Html.TextBoxFor(m => m.UserName, new { style = "width:350px;" })%>
        </div>
        <div class="editor-label">
             <%:Html.LabelFor(m => m.Password)%>
        </div>
        <div class="editor-field">

            <%:Html.PasswordFor(m => m.Password, new { style = "width:350px;" })%> 
        </div>
        <p>
            <input type="image" value="Log On" title="Log On"     src="../../Content/images/signinnew.png"/>
        </p>
</div>
<%} %>

メインビュー:

<script type="text/javascript">
$(document).ready(function () {

    <%if (User.Identity.IsAuthenticated)
    { %>
        $("#logindata").hide();

    <%}
    else
    {%>
    $('#logindata').load("/Account/LogOn?returnUrl= <%:HttpContext.Current.Request.RawUrl%>"); 
    <%} %>
</script>

<%using (Html.BeginForm())
 { %>
<fieldset>
    <legend></legend>

     <div id="logindata" style="border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color: #CCCCCC;margin-bottom:10px;">
         **// I am loading the logon partial view here.**
     </div>


     <div class="editor-label">
        <%: Html.LabelFor(m => m.DeliveryInfo.Email)%>
     </div>
     <div class="editor-field">
        <%: Html.TextBoxFor(m => m.DeliveryInfo.Email)%>    
     </div>
     <div id="tohide">
     <div class="editor-label">
        <%: Html.LabelFor(m => m.DeliveryInfo.Password)%>
     </div>
     <div class="editor-field">
        <%: Html.PasswordFor(m=>m.DeliveryInfo.Password)%>    
     </div>
     <div class="editor-label">
        <%: Html.LabelFor(m => m.DeliveryInfo.ConfirmPassword)%>
     </div>
     <div class="editor-field">
        <%: Html.Password("ConfirmPassword")%>    
        <br />
        <%:Html.ValidationMessageFor(m=>m.DeliveryInfo.ConfirmPassword) %>
     </div>
     </div>
     <div class="editor-label">
        <%: Html.Label("Fullname")%>
     </div>
     <div class="editor-field">
        <%: Html.TextBoxFor(m => m.DeliveryInfo.Name)%>    
     </div>         
</fieldset>    
</div>
<%}%>
4

1 に答える 1

0

部分ビューのHtml.BeginFormは表示されますが、メインビューのHtml.BeginFormは表示されないため、Html.BeginFormは部分ビューもカバーしていると思います。これにより、送信ボタンで必須フィールドが常にトリガーされます。部分ビューの場合はを押します。

<div id="logindata" style="border-bottom-style: solid; border-bottom-width: 1px; border-bottom-color:    
     #CCCCCC;margin-bottom:10px;">
     **// I am loading the logon partial view here.**
 </div>

<% using (Html.BeginForm("ActionMethod", "Controller"))
   { %>
     <div class="editor-label">
        <%: Html.LabelFor(m => m.DeliveryInfo.Email)%>
     </div>
     ......

 <%} %>
 </fieldset>
于 2012-12-03T12:27:33.043 に答える