2013-11-07 3 views
2

Так что это просто. У меня есть вид, вызывающий контроллер, который (в зависимости от bool) вернет новое представление. Но если нет, то останется в текущем виде.Контроллер, возвращающийся к текущему Вид

Как это сделать?

Мой текущий код контроллера-то вроде этого:

public class MyController : Controller 
{ 
    public ActionResult someView(bool myBool) // is really a string 
    { 
     if (myBool) // Is really checking if the string is empty 
     { 
      ModelState.AddModelError("message", "This is true"); 
     } 
     else 
     { 
      return View(); 
     } 
     return null; 
    } 
} 

Я знаю, что мне нужно, чтобы узнать больше о mvc4, но, пожалуйста, играть вместе ;-D


РедактироватьДля мой Капитан Skyhawk ^^

Номер страницы: (T мотки Джон H)

@using (Html.BeginForm("someView", "My", FormMethod.Get)) 
{ 
    @Html.TextBox("text") 
    <input type="submit" value='send' /> 
} 

Но реальная цель моего вопроса, чтобы найти способ вернуться к View вызвавшим его. Надеюсь без Model споспешествуй бы правильный путь ^^

+3

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

+0

Зачем вам это нужно? –

+1

@CaptainSkyhawk Логика неправильная да, но неправильная область? Нет. Контроллер - это то, что диктует представление, а не представление. –

ответ

3

Вы можете перенаправить на другую точку зрения:

public class MyController : Controller 
{ 
    public ActionResult someView(bool myBool) 
    { 
     if (myBool) 
     { 
      return View(); 
     } 

     return RedirectToAction("actionname"); 
    } 
} 

Вы также можете указать имя контроллера и передать материал к другим действиям с RedirectToAction-х другие параметры

+0

Как я могу вернуться к текущему виду, в котором я находился. Что может быть сгенерировано автоматически и, следовательно, не каждый раз? Это то, что я ищу –

+1

Возвращаемый вид View() возвращает текущий вид.Я действительно не понимаю, когда вы говорите, что представление автоматически генерируется. Не могли бы вы подробнее рассказать о том, что вы пытаетесь выполнить с помощью этого автоматически созданного представления? –

+0

На моей странице '_Layout' есть' _PartialView', которые вызывают 'Controller'. Если 'myBool' истинно, он возвращается к' View', из которого он вызван. Если нет, то идет к новому 'View' –

2

return null не имеет смысла. Это, по сути, говорит: «Не возвращай взгляд». Что-то, как это будет работать:

public class MyController : Controller 
{ 
    public ActionResult SomeView(bool myBool) 
    { 
     if (myBool) 
     { 
      ModelState.AddModelError("message", "This is true"); 
      return View(); 
     } 

     return RedirectToAction("SomeOtherView"); 
    } 
} 

Это близко к ModelState.IsValid шаблон я упоминал на другой Ваш вопрос (который идет что-то вроде этого:

public ActionResult SomeView(SomeViewModel model) 
{ 
    if (ModelState.IsValid) 
    { 
     // Model is valid so redirect to another action 
     // to indicate success. 
     return RedirectToAction("Success"); 
    } 

    // This redisplays the form with any errors in the ModelState 
    // collection that have been added by the model binder. 
    return View(model); 
} 
+0

Как я могу вернуться к текущему виду, в котором я есть. Что может быть сгенерировано автоматически и, следовательно, не одно и то же каждый раз? –

+2

См. Джон, вот о чем я говорил;) –

+1

Я обычно называю свои действия парами. Например, одно действие «Создать», которое просто отображает форму. Второй, который принимает модель, которая заполняется данными из формы. Второе действие может вернуться к исходному виду просто с помощью 'return View (model)', где 'model' - ваша модель, которая будет отображать вашу форму, включая любые ошибки. Таким образом, вам никогда не нужно знать имя рассматриваемого мнения. –

1

что-то вроде этого

public class MyController : Controller 
{ 
public ActionResult someView(bool myBool) 
{ 
    if (myBool) 
    { 
     return View("someView"); 
     // or return ReddirectToAction("someAction") 
    } 
    else 
    { 
     return View(); 
    } 

} 

}

Смежные вопросы