کنترل کردن چند دکمه به صورت همزمان در یک فرم در MVC

چهارشنبه 28 مرداد 1394

در این مقاله قصد داریم راهای مختلف کنترل کردن چند دکمه در یک فرم در MVC را آموزش دهیم

گاهی اوقات در یک فرم لازم است چند دکمه که هر کدام دارای وظایفی میباشد وجود داشته باشد که ما قصد داریم در این مقاله طریفه کنترل کردن این دکمه ها در MVC آموزش دهیم

همان طور که مشاهده میکنید 3 تا دکمه ورود ، ثبت نام ، و انصراف قرار داده ایم که هر کدام از دکمه ها تابع خاصی را صدا میزنند که هر دکمه به صورت یک فرم به سرور ارسال میشود

بعد از ایجاد یک پروژه از نوع MVC روی Modelsراست کلیک کرده و یک کلاس به نام Login ایجاد کنید .

 public string userName { get; set; }
        public string password { get; set; }

 

حال یک کنترلر به نام Home ایجاد میکنیم و یک متد با نام  index با دو رودی که ورودی اول برای گرفتن  Model و وردی دوم برای تعین وضعیت  دکمه ها به کار میرود .

 public ActionResult Index(Login model, string command)
        {
            if (command=="Login")
            {
                // do stuff
                return RedirectToAction("Home");
            }
            else if (command=="Register")
            {
                // do stuff
                ViewBag.msg = "شما باید دکمه ثبت نام را کلیک کنید ";
                return View();
            }

            else if (command=="Cancel")
            {
                // do stuff
                ViewBag.msg = "شما باید دکمه انصراف  را کلیک کنید ";
                return View();
            }
            else
            {
                return View();
            }
        }
       

حال یک view برای متد Index ایجاد میکنیم.

 


    @model MvcMultipleSubmitButtons.Models.Login  
    @{  
        ViewBag.Title = "Index";  
    }  
    <h2>  
    Handling multiple submit buttons in MVC </h2>  
    <h5 style="color: Red">@ViewBag.msg</h5>  
    <form action="Home/Index" id="myform" method="post" >   
    //here action name is Index, controller name is Home. So the action path is Home/Index  
        <table>  
            <tr>  
                <td>  
                    UserName  
                </td>  
                <td>  
                    :  
                </td>  
                <td>@Html.TextBoxFor(m => m.userName)  
                </td>  
                <td>  
                    @Html.ValidationMessageFor(m => m.userName)  
                </td>  
            </tr>  
            <tr>  
                <td>  
                    Password  
                </td>  
                <td>  
                    :  
                </td>  
                <td>@Html.TextBoxFor(m => m.password)  
                </td>  
                <td>  
                    @Html.ValidationMessageFor(m => m.password)  
                </td>  
            </tr>  
        </table>  
        <br/>  
       
            <div style="padding-left: 80px;">  
          <input type="submit" id="Login" value="Login" name="Command" title="Login" />  
                <input type="submit" id="Register" value="Register" name="Command" title="Register" />  
                <input type="submit" value="Cancel" name="Command" title="Cancel" />  
                  
        </div>  
    </form>  

 دیگر برای فرستادن تگ فرم به متد Index به صورت زیر میباشد.

@using(Html.BeginForm("Index","Home",FormMethod.Post))  
{   
   //here action name is Index, controller name is Home and form method is post.  
} 

فقط این نکته را یاداوری کنم  نام های input با نام پارامتر ورودی بایدمتقاوت باشد مثل این که نام دکمه Command است ولی نام پارامتر ورودی  command است.

شما میتوانید برای هرکدام از input های خود نام های متفاوت  انتخاب کنید ولی باید به صورت زیر آن ها را کنترل کنید .

<input type="submit" id="Login" value="Login" name="Command1" title="Login" />  
<input type="submit" id="Register" value="Register" name="Command2" title="Register" />  
<input type="submit" value="Cancel" name="Command3" title="Cancel" />

و در کنترلر به صورت زیر میتوان به input های خود دسترسی داشته باشید


    public ActionResult Index(Login model, string command1, string command2, string command3)  
    {  
       // here command1 is for Login, command2 is for Register and command3 is for cancel  
    }  

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید