2011-06-20 7 views
10

Chcę przekazać trzy pola do kontrolera za pomocą funkcji RemoteAttribute. Jak mogę to zrobić?asp.net mvc 3 zdalny atrybut przechodzący 3 pola

public int ID1 { get; set; } 
public int ID2 { get; set; } 

[Remote("CheckTopicExists", "Groups", AdditionalFields = "ID1", ErrorMessage = " ")] 
public string Topic { get; set; } 

     public ActionResult CheckTopicExists(string topic, int ID1,int ID2) 
     { 
      return Json(true, JsonRequestBehavior.AllowGet); 
     } 

Jak mogę przekazać trzy pola do tej funkcji?

Odpowiedz

34

Można rozdzielając je przecinkami:

AdditionalFields = "ID1, ID2" 

Pełny przykład:

Model:

public class MyViewModel 
{ 
    public int ID1 { get; set; } 
    public int ID2 { get; set; } 

    [Remote("CheckTopicExists", "Home", AdditionalFields = "ID1, ID2", ErrorMessage = " ")] 
    public string Topic { get; set; } 
} 

Kontroler:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new MyViewModel 
     { 
      ID1 = 1, 
      ID2 = 2, 
      Topic = "sample topic" 
     }); 
    } 

    [HttpPost] 
    public ActionResult Index(MyViewModel model) 
    { 
     return View(model); 
    } 

    public ActionResult CheckTopicExists(MyViewModel model) 
    { 
     return Json(false, JsonRequestBehavior.AllowGet); 
    } 
} 

Widok:

@model MyViewModel 

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script> 

@using (Html.BeginForm()) 
{ 
    @Html.EditorFor(x => x.ID1) 
    @Html.EditorFor(x => x.ID2) 

    @Html.LabelFor(x => x.Topic) 
    @Html.EditorFor(x => x.Topic) 
    @Html.ValidationMessageFor(x => x.Topic) 
    <input type="submit" value="OK" /> 
} 
+0

Th anks @Darin Dimitrov, działa dobrze ... – Avinash

+2

@Avinash, świetnie, więc może mógłbyś oznaczyć ten post jako odpowiedź, gdyby to było dla ciebie pomocne? –

+0

@DarinDimitrov Avinash nie żyje. W każdym razie dzięki bardzo. Pomogło mi to. –

0

Zamiast

public ActionResult CheckTopicExists(MyViewModel model) 

Jeśli używasz

public ActionResult CheckTopicExists(FormCollection Collection) 

następnie można ponownie wykorzystać kod dla innych klas, jak również

1

Należy pamiętać o terminach wysyłających, czasami kontroler otrzyma data w złym formacie: był dd/mm/rrrr, otrzymuj mm/dd/rrrr