2012-08-29 118 views
3

有問題。爲了在我的項目中添加新的空缺,我使用K-MVC使用K-MVC重定向

public ActionResult AddVacancy() 
{ 
    var viewModel=new VacancyViewModel(); 
    viewModel.AllTechnologies = (from t in _serviceClient.GetTechnologies() select t.Name).ToList(); 
    return View(viewModel); 
} 

[HttpPost] 
public ActionResult AddVacancy(VacancyViewModel viewModel) 
{ 
    _serviceClient.AddVacancy(viewModel); 
    return Json(viewModel); 
} 

// ----------------------------- -------------------------------------------------- -------

@using PerpetuumSoft.Knockout 
@model Core.ViewDataModel.VacancyViewModel 
@{ 
    var ko = Html.CreateKnockoutContext(); 
    ViewBag.Title = "New vacancy"; 
} 
............................... 
@using (ko.Html.Form("AddVacancy", "Vacancy", ko.Model)) 
{ 
...............................................   
<p> 
      <input class="submitButton" type="submit" value="Create" /> 
     </p> 
} 
<div> 
    @Html.ActionLink("Back to List", "Index") 
</div> 

@ko.Apply(Model) 

一切正常!感謝K-MVC! 但是,如果我想重定向到成功submition後另一個動作:

[HttpPost] 
     public ActionResult AddVacancy(VacancyViewModel viewModel) 
     { 
      _serviceClient.AddVacancy(viewModel); 
      return RedirectToAction("Index"); 
     } 

我會收到錯誤,因爲先前的形式沒有收到Ajax.success。我怎樣才能解決這個問題? 在此先感謝!

回答

0

我仍然沒有找到一個解決方案,但使界面更加翔實用戶無需重定向

@using (ko.If(m => m.SavedSuccessfully)) 
{ 
    @ko.Html.Span("NEW VACANCY SAVED TO DATABASE.") 
} 

@using (ko.If(m => m.SavedSuccessfully == false)) 
{ 
    using (ko.Html.Form("AddVacancy", "Vacancy", ko.Model)) 
    { 
     <p>@Html.Label("Name: ")   @ko.Html.TextBox(m => m.Name).ValueUpdate(KnockoutValueUpdateKind.AfterKeyDown) </p> 
     <p>@Html.Label("Active : ")   @ko.Html.CheckBox(m => m.IsOpen).ValueUpdate(KnockoutValueUpdateKind.Change) </p> 
     <p>@Html.Label("English: ")   @ko.Html.DropDownList(m => m.AllLanguageLevels).Value(m => m.EnglishLevel) </p> 
     <p>@Html.Label("German: ")   @ko.Html.DropDownList(m => m.AllLanguageLevels).Value(m => m.GermanLevel) </p> 
     <p>@Html.Label("Technologies: ") @ko.Html.ListBox(m => m.AllTechnologies).SelectedOptions(m => m.NeededTechnology) </p> 
     <p> 
      <input class="submitButton" type="submit" value="Submit" /> 
     </p> 
    } 
} 

和控制器:

 [HttpPost] 
    public ActionResult AddVacancy(VacancyViewModel viewModel) 
    { 
     if(ModelState.IsValid) 
     { 
      _serviceClient.AddVacancy(viewModel); 
      viewModel.SavedSuccessfully = true; 
     } 
     return Json(viewModel); 
    } 

現在,如果空置成功保存 - 形式皮革和信息「新的空白保存到數據庫。「出現。

+0

所以沒有選擇重定向到行動?您只能發回視圖模型的json版本?因爲我有一個類似的問題http://stackoverflow.com/questions/30890625/kmvc-redirect-from-mvc-actionresult-with-json –