PDA

View Full Version : عدم کارکردن فرم ایجکسی ایجاد شده توسط Ajax.Beginform



behnam-soft
چهارشنبه 06 اسفند 1393, 18:51 عصر
سلام دوستان، من یه فرم دارم که می خوام اطلاعات اون از طریف ایجکس ارسال بشه، این محتویات فرمم هست که در صفحه Register.cshtml قرار داره :

@model MvcShop.Models.DomainModels.User

@{
ViewBag.Title = "Register";
}
@using (Ajax.BeginForm("Register", "Home", new AjaxOptions { HttpMethod = "Post", Url = "/Home/Register" }))
{
<div class="form inline" style="direction:rtl">
<div class="group">
<p>
اگر شما ثبت نام کرده اید برای ورود به صفحه <a href="/Home/Register" style="color:green"> ورود کاربران </a>بروید.
</p>
</div>
<div class="group">
<h2>اطلاعات شخصی</h2>
</div>
<div class="group">
<label class="label">نام و نام خانوادگی <span class="required">*</span></label>
<div class="controls"><input name="Name" class="text" type="text" value=""></div>
</div>
<div class="group">
<label class="label">ایمیل <span class="required">*</span></label>
<div class="controls"><input name="Username" class="text" type="text" value=""></div>
</div>
<div class="group">
<label class="label">رمز عبور <span class="required">*</span></label>
<div class="controls"><input name="Password" class="text" type="text" value=""></div>
</div>
<div class="group">
<label class="label">تاریخ تولد <span class="required">*</span></label>
<div class="controls"><input name="Birthdate" class="text" type="text" value=""></div>
</div>
<div class="group">
<label class="label">شماره همراه <span class="required">*</span></label>
<div class="controls"><input name="Mobile" class="text" type="text" value=""></div>
</div>
<div class="group">
<label class="label">تلفن ثابت</label>
<div class="controls"><input name="Tell" class="text" type="text" value=""></div>
</div>
<div class="group">
<label class="label">جنسیت</label>
<select>
<option value="true">زن</option>
<option value="false">مرد</option>
</select>
</div>
</div>
<div class="controls" style="direction:rtl">
<button type="submit" class="button">ثبت نام</button>
</div>
}

و این هم کدی که در کنترلر Home نوشتم :

public ActionResult Register(User user)
{
UserRepository bl = new UserRepository();
if (ModelState.IsValid)
{
if (bl.Add(user))
{
return JavaScript("alert 'ثبت شد'");
}
else
{
return JavaScript("alert 'ثبت نشد متاسفانه'");
}
}
else
{

}
return View();
}

و این هم کدی که در صفحه _Layout نوشتم(به خاطر زیاد نشدن پست، فقط قسمت پایین کد رو نوشتم)
<script src="~/Content/shop/js/jquery-1.8.3.min.js"></script>
<script src="~/Content/shop/js/jquery.jqzoom-core-pack.js"></script>
<script src="~/Content/shop/js/jquery.flexslider-min.js"></script>
<script src="~/Content/shop/js/modernizr.custom.17475.js"></script>
<script src="~/Content/shop/js/jquery.elastislide.js"></script>
<script src="~/Content/shop/js/tabs.js"></script>
<script src="~/Content/shop/js/cycle.js" type="text/javascript"></script>
<script src="~/Content/shop/js/main.js"></script>
<script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
@RenderSection("scripts",false)
که البته کتابخانه جی کوئری که مربوط به ساخت فرم ایجکسی هست رو هم در آخرش اضافه کردم اما هر بار روی دکمه ثبت نام کلیک می کنم هیچ اتفاقی نمی افته.... نمی دونم کجا چی رو جا انداختم که کار نمی کنه...ممنون میشم دوستان راهنمایی کنن...

aroshanzamir
چهارشنبه 06 اسفند 1393, 19:58 عصر
سلام دوست من :

1-در Ajax.BeginFor اکشن و کنترولر را معرفی کردی دیگری نیازی به استفاده از Url در AjaxOption نیست
2-در AjaxOption

new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
LoadingElementId = "divLoadingSendSMS2",
UpdateTargetId = "resultSend"
}))



در AjaxOption یک سری از ویژگی ها را باید مشخص کنی:
1- بعد از انجام عملیات که معمولا خروجی دارد خروجی کجا نمایش داده شود : که در اینجا UpdateTargetId = "resultSend" است : من یک div که id اون resultSend می باشد در صفحه دارم و نتیجه خروجی اکشن متد در این div نمایش داده می شود

مابقی خصوصیات هم واضح است ..

این تعین را هم انجام بده :

HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;


می تونی هم در فایل global پروژه بزاری و هم در بالای همون صفحه که قرار عمیلیات Ajaxی انجام بده بزاری و هم در فایل وب کانفیگ


الان دیگه همه چی درسته باید اجرا بشه ..
در ضمن برای جلوه بهتر خروجی این اکشن متد که داره میگه عملیات انجام شد یا نه را یک پارشیال ویو قرار بده : به این صورت که یک پارشیال ویو ایجاد بکن که بتونیم هر بار مقداری را بهش پاس بدهیم بعد خروجی اکشن متد را پارشیال قرار بده

اگر باز هم به مشکل برخودی بگو تا یک نمونه ضمیمه کنم

موفق و پیروز باشی

behnam-soft
چهارشنبه 06 اسفند 1393, 20:45 عصر
مرسی از راهنمایی شما، اینکار هم کردم، یه بار کار می کنه، یه بار کار نمی کنه ! کلا دیوونه کرده منو ! من دارم این برنامه رو از طریق یه ویدئو می بینم و انجام میدم، دقیقا هم طبق کار های اون پیش میرم اما لامصبپجواب نمیده نمی دونم چرا !برنامه رو براتون میذارم اگه ممکنه خودتون یه تست بکنین ببینین مشکل کجاست، البته مطمئنم یه مشکل خیلی کوچیکه اما من نمی تونم پیداش کنم...1
http://www.uploadbaz.com/5zb9qkwdzflb

aroshanzamir
چهارشنبه 06 اسفند 1393, 21:05 عصر
سلام من هر کاری می کنم نمی تونم دانلودش کنم خطا میده یه جایی دیگه آپلودش کن ..

behnam-soft
چهارشنبه 06 اسفند 1393, 21:23 عصر
لینک رو مجددا تست کردم مشکلی نداشت، اما یه جای دیگه هم آپ کردم.
http://uplod.ir/b3ilkrv4jdba/MvcShop.rar.htm
ممنون می شم اگر بتونی بهم بگی دقیقا مشکل چیه..

aroshanzamir
چهارشنبه 06 اسفند 1393, 21:40 عصر
دانلودش کردم دارم تستش می کنم تا 20 دقیقه دیگه برات آپلودش می کنم

behnam-soft
چهارشنبه 06 اسفند 1393, 21:50 عصر
زحمت می کشی، ولی من می خوام بدونم کدوم قسمتش مشکل داره و چطوری رفع میشه . تشکر

aroshanzamir
چهارشنبه 06 اسفند 1393, 22:13 عصر
سلامی دوباره این هم لینک دانلود :
http://uplod.ir/qmvdbs8xmrfh/MvcShop.zip.htm

aroshanzamir
چهارشنبه 06 اسفند 1393, 22:15 عصر
همون کارهای که بالا بهت گفتم انجام دادم فقط یادت باشه من تو اکشن متد برای تست نوشتم که اگر نام abolfazl بود پیام بده عملیات با موفقیت انجام شد در غیر این صورت عدم موفقیت در عملیات ...
و یک sleep هم برای شبیه سازی عملیات طولانی گذاشتم

موفق باشی

behnam-soft
چهارشنبه 06 اسفند 1393, 22:19 عصر
چرا نوع متد register رو ContentResult قرار دادی؟

aroshanzamir
چهارشنبه 06 اسفند 1393, 22:22 عصر
چون که فقط می خواهم یک متن ساده برگردونم می تونم بزارم پارشیال ویو با یک سری تنظیمات دیگه .. مثلا تو پارشیالی ویو یک div با کلاس alert ایجاد کنم و هر با نسبت به نوع عملیات یک مقدار خاص را بهش پاس بدم ...
راه های زیادی وجو داره .... بستگی به گستردگی اون کاری داره که می خواهی انجامش بدی