2016-05-25 4 views
0

Viewを別のメソッドの中に返しますが、同じコントローラ内に返すメソッドを呼び出そうとします。私のコードがあります:同じコントローラ内の別のメソッドからメソッドを呼び出すことができないのはなぜですか?

public ActionResult GetAnswer(List<PossibleAnswerVM> possibleAnswers) 
{ 
    if (IsLastQuestion(possibleAnswers.FirstOrDefault().IdQuestion)) 
    { 
     return Index(); 
    } 
    return null; 
} 
[HttpGet] 
public ActionResult Index() 
{ 
    IEnumerable<Anketa> anketas = Manager.SelectAnketa(); 
    return View(anketas); 
} 

は、そしてまた、私は別のコントローラからRedirectToAction()、通話方法を試してみましたGetAnswer()

@using (Ajax.BeginForm("GetAnswer", "Survey", FormMethod.Post, 
    new AjaxOptions { InsertionMode = InsertionMode.Replace })) 
{ 
    <input type="submit" value="Ответить" 
     onclick="answerClick(@Model.FirstOrDefault().OrdQuestion);" 
     class="btn btn-default" /> 
} 

を呼び出すフォームがあります。
助けていただければ幸いです。

+0

'public static bool' ... –

+1

あなたはそのメソッドを呼び出すことができないと言うとき、正確に何を意味しますか?実行時の例外であるコンパイルエラーが発生していますか?もしそうなら、あなたが得ているメッセージを投稿してください。 – juharr

+0

実際問題は何も起こらないということです。プロセスは 'return Index();'文でブレークポイントに行き、 'Index()'メソッドの中に入りますが、適切な 'View'は表示されません。 –

答えて

0

これを試してください。

public ActionResult GetAnswer(List<PossibleAnswerVM> possibleAnswers) 
{ 
    if (IsLastQuestion(possibleAnswers.FirstOrDefault().IdQuestion)) 
    { 
      IEnumerable<Anketa> anketas = Manager.SelectAnketa(); 
      return View("VIEWNAME", anketas); 
    } 
    return null; 
} 

private static bool IsLastQuestion(int idQuestion) 
{ 
    var returnValue = false; 

    Question question = Manager.GetQuestion(idQuestion); 
    List<Question> questions = Manager.SelectQuestions(question.idAnketa); 

    if (questions.Count == Manager.GetCountQuestionsAnswered(question.idAnketa, SessionUser.PersonID)) 
    { 
     returnValue = true; 
    }      
    return returnValue; 
} 
+0

私は 'Action()'の代わりに 'View()'を返そうとしましたが、あまり役に立ちませんでした。また、強く型付けされたビューのオブジェクトを初期化する必要があります。 –

+0

@VitalyIsaenkoあなたはIndex()メソッドにコードを投稿することができます.IVEは上記のindex()を返すように変更されました。 – David

+0

はい、このアプローチは助けてくれました、ありがとうございます。しかし、なぜ私はビューの代わりにメソッドを返すことができないのですか? –

関連する問題