Это плохой дизайн, чтобы вернуть частичное представление, которое содержит только предупреждение Java-сценария в моем asp.net MVC - PullRequest
3 голосов
/ 14 марта 2012

У меня есть следующий метод действия, который возвращает частичное представление _error в случае возникновения исключения: -

[AcceptVerbs(HttpVerbs.Post)]
public PartialViewResult Register(string id, int classid) {
    try
    {
        Thread.Sleep(3000);
        User user = r.FindUser(id);
        Users_Classes uc = new Users_Classes();
        uc.AddedDate = DateTime.Now;
        uc.ClassID = classid;
        user.Users_Classes.Add(uc);
        r.Save();
        ViewBag.classid = classid;
        return PartialView("_usersearch2", uc);
    }
    catch (DataException ex)
    { 
        return PartialView("_error");
    }

и следующий _error частичный вид: -

<script type="text/javascript">
    alert('The user might have been already Assinged, Search Again to get the latest users');
</script>

Приведенный выше подход работает нормально, но считает ли это плохим дизайном возвращение частичного представления для отображения только предупреждения? и есть ли лучший способ сделать это?

Ответы [ 3 ]

3 голосов
/ 14 марта 2012

Проблема в том, что вы сейчас привязываете свою реализацию к своему пользовательскому интерфейсу.Контроллер внезапно решает, как должно появиться сообщение об ошибке на клиенте.

Что если вы хотите изменить его с предупреждения на отображение красной рамки вокруг текстового ввода с некоторым описанием рядом с ним?

Определение того, как что-то должно отображаться, зависит от вашего взгляда.Ваш контроллер должен только возвращать коды состояния, а затем ваше мнение должно решить, что делать.

0 голосов
/ 14 марта 2012

В общем, я бы сказал, да. Но иногда плохой дизайн - это то, что доктор прописал;)

Существует метод экземпляра Controller, называемый Javascript, который я использую для возврата исполняемого javascript из моего контроллера, в очень ограниченных случаях, когда не хватает времени, чтобы сделать это «правильным» способом:

[AcceptVerbs(HttpVerbs.Post)]
public PartialViewResult Register(string id, int classid) 
{
    try
    {
        ... stuff
    }
    catch (DataException ex)
    { 
        return Javascript("alert('The user might have been already Assinged, Search Again to get the latest users');");
    }
}

Тот факт, что что-то подобное существует, дает мне утешение, что я не полностью нарушаю закон ... если я не использую его неправильно, что я, вероятно, и есть.

0 голосов
/ 14 марта 2012

Вместо возврата встроенного js у вас должен быть код обработки ошибок на стороне клиента в библиотеке js.Вместо того, чтобы возвращать дыру, js только возвращает сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...