2013-06-07 4 views
3

У меня есть 4 кнопки на форме «Отправить 1» называет контроллер A, «Submit 2» вызывает контроллер B.MVC несколько кнопок Проверка

У меня также есть кнопка «1» и «2» кнопка на той же формы, и я не хочу, чтобы для них произошла проверка/пожар.

Как сделать 'Submit 1' и 'Submit 2' для подтверждения формы, а не 'Button 1' и 'Button 2'?

В то же время кнопки «1» и «кнопка 2» должны подаваться на разные контроллеры. Как мне это достичь?

public class SampleForm 
{ 
    [Display(Name = "FName: ")] 
    [Required(ErrorMessage = "Enter FName")] 
    public string FirstName { get; set; } 

    [Display(Name = "LName: ")] 
    [Required(ErrorMessage = "Enter LName")] 
    public string LastName { get; set; } 

    [Display(Name = "Bypassid: ")] 
    [Required(ErrorMessage = "Enter Bypassid")] 
    public string Bypassid { get; set; }  
} 

@model SampleForm 
@using (Html.BeginForm("SampleForm", "SampleController", FormMethod.Post, new { name = "frmSample", id = "frmSample" })) 
{ 
    @Html.LabelFor(model => model.FirstName) 
    @Html.TextBoxFor(model => model.FirstName) 
    @Html.ValidationMessageFor(model => model.FirstName) 

    @Html.LabelFor(model => model.LastName) 
    @Html.TextBoxFor(model => model.LastName) 
    @Html.ValidationMessageFor(model => model.LastName) 

    @Html.LabelFor(model => model.Bypassid) 
    @Html.TextBoxFor(model => model.Bypassid) 
    @Html.ValidationMessageFor(model => model.Bypassid) 

    <input type="submit" value="Submit 1" name="Command" /> 

    <input type="submit" value="Submit 2" name="Command" /> 

    <button type="button" name="Button 1" value="Button 1">Button 1</button> 

    <button type="button" name="Button 2" value="Button 2">Button 2</button> 
} 

Я хочу «Submit 1» и «Submit 2», чтобы проверить форму с помощью DataAnnotations, но при нажатии кнопки «Button 1» Я хочу, чтобы убедиться, что это значение в поле «Bypassid» и перенаправлять к другому контроллеру (скажем , и когда я нажимаю «Button 2», я ничего не проверяю и просто перенаправляю на другой контроллер.

+0

Являются ли эти butttons на том же виде или в разных формах? и вы использовали для проверки? Проверка jQuery или DataAnnotations? – vijay

+0

У меня есть все кнопки в той же форме. Я использую DataAnnotations для проверки. – CoolArchTek

+0

Не могли бы вы предоставить точный Html, который вы используете? благодаря! – Javier

ответ

2

Что касается представления двух действий, у вас есть правильная идея с двумя кнопками отправки и независимыми значения. Вы можете использовать значения внутри действия, чтобы расшифровать, как вы хотите обработать запрос. Хотя вы будете отправлять только одно действие в конце дня, вы можете перенаправить его с помощью n действие для обработки дисперсии процессов. например

@using (Html.BeginForm("BasicAction")) 
{ 
    @* controls *@ 
    <input type="submit" value="action1" name="command" /> 
    <input type="submit" value="action2" name="command" /> 
} 

Затем контроллер:

[HttpPost] 
public ActionResult BasicAction(MyModel model, String command) 
{ 
    if (ModelState.IsValid) 
    { 
     switch (command) 
     { 
      case "action1": 
       return RedirectToAction("Action1", new { model = model }); 
      case "action2": 
       return RedirectToAction("Action2", new { model = model }); 
     } 
    } 
    return View(model); 
} 

// handle action1 
[NonAction] 
public ActionResult Action1(MyModel model) 
{ 
    // do whatever 
} 

[NonAction] 
// handle action2 
public ActionResult Action2(MyModel model) 
{ 
    // do whatever 
} 

Насколько отключение проверки, вы можете установить disableValidation=true на кнопке 1 & 2 и проверка на стороне клиента будет игнорироваться (я считаю, что это было от MVC2). Для этого добавьте следующий javascript после того, как эти кнопки будут определены:

<script> 
    // IDs of the buttons to be disabled 
    var disabled = ['button1','button2']; 
    for (var i = 0; i < disabled.length; i++){ 
     document.getElementById(disabled[i]).disableValidation = true; 
    } 
</script> 
+0

Спасибо, Брэд. В моем случае я не хочу отключать проверку, скажем, «Button 1», и я хочу, чтобы «Button 1» проверяла только одно поле в поле вместо трех. Я тоже пытаюсь найти свою сторону. Еще раз спасибо! – CoolArchTek

+0

@CoolArchTek: в этом случае, посмотрите на этот вопрос: http://stackoverflow.com/questions/7340751/asp-net-mvc-validation-groups –

Смежные вопросы