مشکل در اجرای کد
سلام
یه برنامه تو Asp.net Mvc نوشتم که وزن و سرعت دو هواپیما رو با هم مقایسه کنه ولی هنگام اجرای کد به ارور برمیخورم
کنترلر برنامه به این صورت
public class HomeController : Controller { public int Speed; public int Weight; public int w1; public int s1; private int s2; private int w2; public void set1(int s, int w) { s = Speed; w = Weight; } public ActionResult Step1() { HomeController a1 = new HomeController(); HomeController a2 = new HomeController(); a1.set1(s1, w1); a1.set1(s2, w2); if (((a1.Speed) / (a1.Weight)) > ((a2.Speed) / (a2.Weight))) { ViewBag.Airport1 = "airport 1 is better!"; } else if (((a1.Speed) / (a1.Weight)) == ((a2.Speed) / (a2.Weight))) ViewBag.Mosavi = "airport 1 == airport 2"; else ViewBag.Airport2 = "airport 2 is better!"; return View(); } }
اینم کد ویوو
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Step1</title> </head> <body> <div> @ViewBag.Airport1 @ViewBag.Mosavi @ViewBag.Airport2 </div> </body> </html>
یک صفحه صفحه Html هم است که مقادیر رو به صورت پست ارسال میکنه
ولی هنگام ارسال مقادیر این ارور دریافت میکنم :
ممنون میشم راهنمایی کنید
7 پاسخ
سلام دوست عزيز
بهترين روش استفاده از Model هست . اگر نياز به توضيح هست بفرما تا تشريح كنم .
موفق باشي .
ممنون بابت نکته شما مهندس همین کارو هم کردم ولی همون خطای قبلی رخ میده به سوالات امتحاني علاقه ای ندارم :) ولی چه راه حل بهتری سراغ دارید ؟
این کد رو به چه صورتی میتوان نوشت که درست کار کنه ؟
خیر من اصلا تو فرم مقدار صفری وارد نکردم
همین برنامه رو تو کنسول نوشتم درست کار میکنه
فرم ارسال مقادیر
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> </head> <body> <form action="Home/Step1/" method="post"> <p>هواپیمای 1</p> سرعت :<input type="text" name="s1" /><br /> وزن :<input type="text" name="w1" /><br /> <p>هواپیمای 2</p> سرعت : <input type="text" name="s2" /><br /> وزن : <input type="text" name="w2" /> <input type="submit" value="ارسال" /> </form> </body> </html>
ممنون میشم همین کد رو به صورت مدل Model شرح دهید.
سلام عزيز دل برادر
public void set1(int s, int w) { s = Speed; w = Weight; }
اينجا اشتباهه . چي رو داري تو چي ميريزي ؟؟!
Speed = s; Weight = w;
بعدم چرا داري لقمه رو دو دور دوره كله ميپيچوني ؟! نكنه به سوالات امتحاني علاقه مندي ؟ ;)
پوزش به خاطر مزاح .
موفق باشي .
سلام دوست عزيز
1- ابتداي امر يك مدل به شكل زير ايجاد ميكنيم :
public class Compare { [Display(Name = "وزن هواپيماي اول")] public int WeightAir1 { get; set; } [Display(Name = "سرعت هواپيماي اول")] public int SpeedAir1 { get; set; } [Display(Name = "وزن هواپيماي دوم")] public int WeightAir2 { get; set; } [Display(Name = "سرعت هواپيماي دوم")] public int SpeedAir2 { get; set; } }
2- در مرحله دوم فرم ورود اطلاعات رو ميسازيم :
الف ) سمت كنترلر :
public ActionResult Index() { return View(); }
ب) سمت ويو
@model CompareTest.Models.Compare @{ ViewBag.Title = "Index"; } <h2>مقايسه دو هواپيما</h2> <div class="row"> <div class="col-md-12"> @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <div class="form-group"> @Html.LabelFor(model => model.WeightAir1) @Html.EditorFor(model => model.WeightAir1) </div> <div class="form-group"> @Html.LabelFor(model => model.SpeedAir1) @Html.EditorFor(model => model.SpeedAir1) </div> <div class="form-group"> @Html.LabelFor(model => model.WeightAir2) @Html.EditorFor(model => model.WeightAir2) </div> <div class="form-group"> @Html.LabelFor(model => model.SpeedAir2) @Html.EditorFor(model => model.SpeedAir2) </div> </div> <br /> <button type="submit">ثبت</button> } </div> </div>
3- در مرحله سوم اكشن مربوط به Post رو ميسازيم در همون كنترلر
[HttpPost] public ActionResult Index(Compare compare) { if (ModelState.IsValid) { var resultStr = ""; if (compare.SpeedAir1 / compare.WeightAir1 > compare.SpeedAir2 / compare.WeightAir2) resultStr = "هواپيماي 1 بهتر از هواپيماي دوم هست"; else if (compare.SpeedAir1 / compare.WeightAir1 < compare.SpeedAir2 / compare.WeightAir2) resultStr = "هواپيماي دوم بهتر از هواپيماي اول هست"; else resultStr = "دو هواپيما خوب هستند."; return RedirectToAction("Result",new {result = resultStr}); } return View(); }
4- صفحه اعلام نتيجه (Result) رو ميسازيم :
الف) سمت كنترلر :
public ActionResult Result(string result) { ViewBag.result = result; return View(); }
ب) سمت ويو :
@{ ViewBag.Title = "Result"; } <h2>نتيجه</h2> <div class="alert alert-danger"> @ViewBag.result </div>
هر جا ابهام داشتي بپرس .
موفق باشي .
سلام، وقت بخیر
پیام خطا مشخص هست، شما دارید یک عدد رو تقسیم بر صفر می کنید که این کار غیر مجاز هست، مقادیر a1.Weight یا a2.Weight رو بررسی کنید که یکیشون صفر هست.