2012-05-31 5 views
0

мне нужно поддерживать интерес студентов в режиме редактирования есть частичный вид где два списка - один для текущего интереса и других свободных (которые не были добавлены в профиль студента) каждый интерес имеет ссылку ajax Action. когда я нажимаю на нее, она добавляет к текущему интересу студенту. проблема заключается в that-- мне нужно послать удостоверение личности студента с ним что из родительского вида (т.е. не с частичным видом), и студент идентификатор в URL или - как я могу получить доступ к студенческому билету в частичномзначение доступа от родительского из PartialView MVC3

// пример кода

@model StdMan.Models.Student 

@{ 
    ViewBag.Title = "Edit"; 
} 

<h2>Edit</h2> 

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



@using (Html.BeginForm()) { 
    @Html.ValidationSummary(true) 
    <fieldset> 
     <legend>Project</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.StId) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.StId) 
      @Html.ValidationMessageFor(model => model.StId) 
     </div> 

    <div class="editor-label"> 
      Intested In    
     </div> 
     <div class="editor-field" id="Interest"> 
      @Html.Action("PartialAddInterest", "Interest") 
     </div> 

    </fieldset> 
    <p> 
      <input type="submit" value="Save" /> 
     </p> 
} 

////////// - PartialView PartialAddInterest.cshtml

@model IEnumerable<StdMan.Models.Interest> 

<table> 
@foreach (var item in ViewBag.Added) 
{ 
    <tr> 
     <td>@item.Name 

      @Ajax.ActionLink("Remove", "RemoveInterest",new { id = item.IsId }, 
    new AjaxOptions 
    { 
     UpdateTargetId = "Interest", 
     InsertionMode = InsertionMode.Replace, 
     HttpMethod = "GET" 
    }) 
     </td> 
    </tr> 
} 
</table> 

<table> 

@foreach (var item in ViewBag.Rem) 
{ 
    <tr> 
     <td>@item.Name 

      @Ajax.ActionLink("Add", "AddInterest", new { id = item.IsId }, 
    new AjaxOptions 
    { 
     UpdateTargetId = "Interest", 
     InsertionMode = InsertionMode.Replace, 
     HttpMethod = "GET" 
    }) 
     </td> 
    </tr> 
} 

</table> 

Я должен передать model.StId с Актом Ajax ionlink как @ Ajax.ActionLink ("Добавить", "AddInterest", новый {идентификатор = item.IsId, STID = @ Model.StId},

В контроллере

public ActionResult AddInterest(int id, int StId) 
{ 
      //logic to add interest in specific student profile depend on StId 
} 
+1

Пожалуйста, покажите свой код. –

+0

@ Darin Dimitrov, спасибо за ответ, я добавлю пример кода – vikrantx

ответ

0

Вы могли бы передать студенту идентификатор к PartialAddTool ребенка действия:

@Html.Action("PartialAddTool", "Interest", new { id = Model.StId }) 

и теперь действия контроллера будет иметь удостоверение личности студента:

public ActionResult PartialAddTool(int stdId) 
{ 
    ... 
} 

Теперь все, что осталось, имеет действие PartialAddTool, чтобы установить некоторое свойство модели представления, которое передается частичному представлению. В настоящее время это частичное представление, похоже, строго типизировано до IEnumerable<StdMan.Models.Interest>, но вы можете создать новую модель представления, которая имеет 2 свойства: идентификатор студента и совокупность интересов. Таким образом, частичное представление будет иметь идентификатор студента, и оно может быть использовано при создании ссылок, которые, наконец, будут переданы в действие AddInterest.

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