3

問題があります。プロジェクトに新しい空席を追加するには、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に感謝します!しかし、送信が成功した後に別のアクションにリダイレクトしたい場合:

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

以前のフォームはAjax.successを受け取らないため、エラーが発生します。この問題をどのように管理できますか?前もって感謝します!

4

1 に答える 1

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);
    }

そして今、空室が正常に保存された場合-フォームが非表示になり、「新しい空室がデータベースに保存されました」という情報が表示されます。が表示されます。

于 2012-08-31T06:35:42.990 に答える