ورود

View Full Version : سوال: بزرگ شدن صفحه هنگام استفاده از Ajax.BeginForm()



kavayo
سه شنبه 01 بهمن 1392, 18:45 عصر
من میخوام با کلیک بر روی منوی ورود یک پنجره باز بشه ودر اون یک پارشال ویو بارگذاری بشه که این پارشال ویو دارای دو تکست باکس و یک باتن جهت ورود به سایت است حال در این پارشال ویو زمانی که دکمه ورود را کلیک میکنم اگر کاربر اطلاعاتی وارد نکرده باشه یا اشتباه وارد کرده باشه صفحه پارشال ویو بزرگ میشه و کل صفحه رو میگیره حال من چطور این مشکل رو حل کنم؟

@model testmachine.Models.UserViewModel

<title>_myContent</title>
@using (Ajax.BeginForm("MemberLogin", "Home", new AjaxOptions { UpdateTargetId = "mytable", InsertionMode = InsertionMode.Replace, HttpMethod = "Post" }, new { id = "myform" }))
// using (Html.BeginForm("MemberLogin", "Home"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<div id="tt"></div>


<table style="width: 100%;" class="mytable" id="mytable">
<tr>
<td>&nbsp;نام کاربری :</td>
<td>&nbsp;@Html.TextBoxFor(p => p.username)
@* <input id="username" type="text" />*@

</td>
<td>&nbsp;@Html.ValidationMessageFor(p => p.username)</td>
</tr>
<tr>
<td>&nbsp;کلمه عبور :</td>
<td>&nbsp;@Html.TextBoxFor(p => p.username)
@*<input id="password" type="password" />*@

</td>
<td>&nbsp;@Html.ValidationMessageFor(p => p.password)</td>
</tr>
<tr>
<td >&nbsp;</td>
<td style="text-align:right;">
@*<input id="password" type="password" />*@
@Html.CheckBoxFor(p => p.RememberMe, new { style = "width:20px;" }) @Html.LabelFor(p => p.RememberMe)
</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;<input id="Submit1" type="submit" value="ورود" class="cssButton" style="width:60px;text-align:center;height:38px;float:left;margin-left:40px;" /></td>
<td>&nbsp;</td>
</tr>
<tr><td><div id="mydiv">
<p>@TempData["Status"]</p></div></td></tr>
</table>


}



[HttpPost]
// [Authorize]
[ActionName("MemberLogin")]
public ActionResult Login(UserViewModel model, string returnUrl)
{
//if (!ModelState.IsValid)
// return PartialView("AjaxContent", model);
//else
// return null;

if (ModelState.IsValid)
{
if (Membership.ValidateUser(model.username, model.password))
{
FormsAuthentication.SetAuthCookie(model.username, model.RememberMe);
if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
&& !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("AjaxContent");
}
}
else
{
TempData["Status"] = "Invalid username or password";
return RedirectToAction("AjaxContent");
}
}

TempData["Status"] = "Invalid request";
//return RedirectToAction("AjaxContent", model);
return PartialView("_myContent");

}

hakim22
چهارشنبه 02 بهمن 1392, 06:56 صبح
شما دارید خود table رو Replace میکنید. یک div تعریف کنید و table رو درون اون قرار بدید و سپس اون div رو Replace کنید.

kavayo
چهارشنبه 02 بهمن 1392, 14:43 عصر
من کل table رو داخل div قرار میدهم و سپس اون رو داخل بلاک Ajax.Beginform قرار میدهم که در اولین باری که باتن رو کلیک میکنم اعتبارسنجی ورودی ها به درستی انجام میشود و خطاهای مربوطه نمایش داده میشود (عمل Replace به درستی کار میکند) اما برای دومین بار که کلیک میکنم صفحه بزرگ میشود و با هر بار کلیک، صفحه رفرش میشود نمیدانم مشکل کجاست؟

hakim22
چهارشنبه 02 بهمن 1392, 15:49 عصر
مطمئن هستید که فایل jquery.unobtrusive-ajax رو درون این صفحه لود کرده اید !؟

kavayo
جمعه 04 بهمن 1392, 21:58 عصر
بله این فایل رو هم در صفحه مورد نظر لود کرده ام در حقیقت پارشال ویوی مورد نظر داخل یک kendo window لود میشود زمانی که ویژگی modal این window را false قرار میدهم و ویژگی iframe آن را true قرار میدهم مشکل حل میشود اما در این حالت window مورد نظر بد شکل میشود و استایل خود را از دست میدهد.