2015-12-05 2 views
0

У меня есть следующий частичный видMVC Ajax форма для редактируемые строки таблицы

@model Marks.Web.ViewModels.AssignmentMarkViewModel 

<div class="table"> 
    @using (Ajax.BeginForm("_MarkInlineEditor", "Semesters", new AjaxOptions 
    { 
     HttpMethod = "POST", 
     InsertionMode = InsertionMode.Replace, 
     UpdateTargetId = "editor" + Model.AssignmentId 
    }, new { @id = "editor" + Model.AssignmentId, @class = "tr" })) 
    { 
     <span class="td">@Model.AssignmentName</span> 
     <span class="td">@(Model.Mark.HasValue ? Model.Mark.Value.ToString("#.##") : "")</span> 
     <span class="td">@Model.Weight.ToString("#.##")</span> 
     <span class="td">@(Model.ActualMark.HasValue ? Model.ActualMark.Value.ToString("#.##") : "")</span> 
     @Html.HiddenFor(model => model.AssignmentId) 
     <span class="td"><button type="submit" name="option" value="edit">Edit</button></span> 
     <span class="td"><button type="submit" name="option" value="clear">Clear</button></span> 
    } 
</div> 

При нажатии на кнопку Edit, метод действия возвращает этот другой частичный вид, который служит в режиме редактирования:

@model Marks.Web.ViewModels.AssignmentMarkViewModel 

<div class="table"> 
    @using (Ajax.BeginForm("_MarkInlineViewer", "Semesters", new AjaxOptions 
    { 
     HttpMethod = "POST", 
     InsertionMode = InsertionMode.Replace, 
     UpdateTargetId = "viewer" + Model.AssignmentId 
    }, new { @id = "viewer" + Model.AssignmentId, @class = "tr" })) 
    { 
     <span class="td">@Html.TextBoxFor(m => m.AssignmentName)</span> 
     <span class="td">@Html.TextBoxFor(m => m.Mark)</span> 
     <span class="td">@Html.TextBoxFor(m => m.Weight, new { required="required", type="number" })</span> 
     <span class="td">xx</span> 
     @Html.HiddenFor(model => model.AssignmentId) 
     <span class="td"><button type="submit" name="option" value="save">Save</button></span> 
     <span class="td"><button type="submit" name="option" value="cancel">Cancel</button></span> 
    } 
</div> 

Когда я нажимаю кнопку «Сохранить», вызываемый метод действия должен быть _MarkInlineViewer, но вместо этого он вызывает _MarkInlineEditor. Что-то не так с тем, как я это делаю? Вот методы действий:

public PartialViewResult _MarkInlineEditor(string option, int assignmentId) 
{ 
    var marksRepo = new MarksRepo(); 
    var mark = marksRepo.GetMarkById(assignmentId); 
    var markVm = Mapper.Map<AssignmentMarkViewModel>(mark); 
    return PartialView(option == "edit" ? "_MarkInlineEditor" : "_MarkInlineViewer", markVm); 
} 

public PartialViewResult _MarkInlineViewer(AssignmentMarkViewModel amvm) 
{ 
    var marksRepo = new MarksRepo(); 
    var mark = Mapper.Map<AssignmentMark>(amvm); 
    var updatedMark = marksRepo.UpdateMark(mark); 
    var updatedAmvm = Mapper.Map<AssignmentMarkViewModel>(updatedMark); 

    return PartialView("_MarkInlineViewer", updatedAmvm); 
} 
+0

вы не можете вставить формы тегов – Mate

+0

Я знаю, что это то, что он здесь делает? Я думал, что это заменит всю форму. – muttley91

ответ

0

Оказывается, я не могу заменить форму я работаю, как я пытался сделать здесь, так что для моей UpdateTargetId я использовал родительский DIV вместо формы по ID ,