2015-12-02 3 views
-2

Это, вероятно, довольно глупый вопрос, но я новичок в MVC, и я просто не знаю, как это сделать. Мне нужно возвращать разные представления, основанные на статусе переменной. Когда я пытаюсь возвращать частичные представления внутри условного оператора, метод дает ошибку, чтобы никакое значение не возвращалось. Вот идея того, что я пытаюсь сделать.ASP.Net MVC возвращает частичный вид, основанный на условии

if (status == 1) 
{ 
    return PartialView("partial1", model); 
} 
if (status == 2) 
{ 
    return PartialView("partial2", model); 
} 
if (status == 3) 
{ 
    return PartialView("partial3", model); 
} 
+3

Я предполагаю, что вы имеете в виду 'если (состояние == 1)' –

+0

Опубликуйте все действие контроллера (после фиксации коды, обратите внимание на комментарии @StephenMueckes'), и точное сообщение об ошибке. – ataravati

+0

@StephenMuecke извините за это. Я просто пытался напечатать простой образец. – hollyquinn

ответ

2

Вам нужен другой или конечный оператор возврата.

Что делать, если ваша функция вызывается без статуса, равного 1, 2 или 3?

Например, предположим, что status = 4:

public ActionResult SomeMethod(int status) //Assume 4 is passed in 
{ 
    if (status == 1) 
    { 
     return PartialView("partial1", model); 
    } 
    if (status == 2) 
    { 
     return PartialView("partial2", model); 
    } 
    if (status == 3) 
    { 
     return PartialView("partial3", model); 
    } 

    //We got here, but haven't returned anything! 
} 

Нам нужна функция, возвращающая что-то. Я не уверен, что имеет смысл для вашего приложения, но что-то вроде этого необходимо.

public ActionResult SomeMethod(int status) //Assume 4 is passed in 
{ 
    if (status == 1) 
    { 
     return PartialView("partial1", model); 
    } 
    if (status == 2) 
    { 
     return PartialView("partial2", model); 
    } 
    if (status == 3) 
    { 
     return PartialView("partial3", model); 
    } 

    //We got here, so return some default or fallback Partial. 
    return PartialView("SomeFallbackPartial", model); 
} 
1

Вы можете иметь проектную ошибку, если один контроллер действия делают так много, но вы можете устранить проблему в одном из этих способов ...

Добавить по умолчанию:

if (status == 1) 
{ 
    return PartialView("partial1", model); 
} 
if (status == 2) 
{ 
    return PartialView("partial2", model); 
} 
if (status == 3) 
{ 
    return PartialView("partial3", model); 
} 

return PartialView("default"); 

Бросьте исключение:

if (status == 1) 
{ 
    return PartialView("partial1", model); 
} 
if (status == 2) 
{ 
    return PartialView("partial2", model); 
} 
if (status == 3) 
{ 
    return PartialView("partial3", model); 
} 

throw new CustomException("Invalid status"); 

Как все они разделяют модель, возможно, вы могли бы использовать карту, чтобы получить на основе имени вида уплотнительные n статус (или объединить его, если он действительно совпадает с номером).

var viewName = string.format("partial{0}", status); 
return PartialView(viewName, model); 
Смежные вопросы