Как отобразить «Окно сообщений» с помощью контроллера MVC3 - PullRequest
1 голос
/ 26 сентября 2011

У меня возникла проблема с отображением «окна сообщений» после выполнения некоторого кода в контроллере

для примера: -

public ActionResult IsLoginExsit(CustomerDO loginData)
        {

            JsonResult jsonResult = new JsonResult();            
             if (!string.IsNullOrEmpty(loginData.UserName) && !string.IsNullOrEmpty(loginData.Password))                 
             {                     
                 bool result = Businesss.Factory.BusinessFactory.GetRegistrations().IsLoginExist(loginData.UserName, loginData.Password);                     

                     jsonResult.Data = result;

             }      
             return jsonResult;
        }

, как видно из приведенного выше примера, если результатtrue или false, тогда я хотел бы отобразить окно сообщения о том, что логин успешен или неудачен.

<!-- language: lang-.html -->
    <form class="formStyle" action="#" method="POST" id="frmAuthenticate">
            <div class="row">
            <input class="text row" type="text" value="" id="txtUserName"/>
            </div>
            <div class="row">
            <input class="text row" type="password" value="" id="txtPassword" /> 
            </div>  
            <div class="row last">
            <a class="link" href="">Forgot Password?</a>   
            <a class="button3" href="/Registration/Registration" title="Registration" >Signup</a>        
<input type="submit" class="button4" id="btnGo" value="Go" />            
            </div>
        </form>

Если логин существует, я хочу перейти к «/ Customer / CollaborationPortal», иначе я бы хотелотобразить сообщение «Ошибка авторизации».

$("#btnGo").click(function (e) {
                var RegData = getRegData();
                if (RegData === null) {
                    console.log("Specify Data!");
                    return;
                }
 var json = JSON.stringify(RegData)
                $.ajax({
                    url: '/Registration/IsLoginExsit',
                    type: 'POST',
                    dataType: 'json',
                    data: json,
                    contentType: 'application/json; charset=utf-8',
                    success: function (data) {                     
                    if(data.result == true){                                                 
                    location.href = "/Customer/CollaborationPortal";                     
                    }                    
                     else{
                         alert("Login failed"); //or whatever                     
                     }             
                     }
                });
return false;
            });
            function getRegData() {

                var UserName = $("#txtUserName").val();
                var Password = $("#txtPassword").val();
                return { "UserName": UserName, "Password": Password };
            }

Заранее спасибо

Ответы [ 4 ]

3 голосов
/ 26 сентября 2011

Вы можете отобразить окно сообщения, когда закончите.

public ActionResult LoginExist(BAMasterCustomerDO loginData)
{
    return new JavascriptResult { Script = "alert('Saved successfully');" };
}
3 голосов
/ 26 сентября 2011

В MVC нет способа сделать это так просто, как в приложении winforms.

Самый простой способ отобразить окно сообщения на веб-странице в вашем случае - изменить это действие с ActionResult на JsonResult и заменить if, если:

return Json(new {result = result});

и на веб-странице вам нужно использовать ajax (то есть отправить форму с использованием $ .post jquery) и в функции обратного вызова проверить результат:

$("form input[type=submit]").click(function(){
    var formData = $(this).closest("form").serialize();
    $.post("urltoyourcontrollerhere/IsLoginExsit", formData, function(data){
        if(data && data.result == true){ alert("Login exists!");}
    });
});

UPDATE Код, который вы разместили, кажется нормальным, но есть одна проблема. Функция успеха:

success: function (data) {
                        location.href = "/Customer/CollaborationPortal";
                    }

Эта функция всегда выполняет перенаправление, независимо от того, какой контроллер возвращен. Вам нужно проверить, если data.result (если вы вернули свой json как Json (new {result = result});), истинно, а затем перенаправить, иначе вывести предупреждение. Итак, попробуйте:

success: function (data) {
                    if(data.result == true){                        
                        location.href = "/Customer/CollaborationPortal";
                    }
                    else{
                        alert("Login failed"); //or whatever
                    }
            }

Другое дело:

            var RegData = getRegData();
            if (RegData === null)

Если вы хотите, чтобы это работало, вам нужно вернуть null из getRegData, когда одно из текстовых полей пусто.

1 голос
/ 26 сентября 2011

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

var model = new MyViewModel();
bool result = Businesss.Factory.BusinessFactory.GetRegistrations().IsLoginExist(loginData.UserName, loginData.Password);
model.IsLoginSuccess = result;

... 

return View(model);

и внутри вашего строго типизированного представления вы протестируете значение этого свойства и отобразите соответствующее сообщение:

@if (Model.IsLoginSuccess)
{
    <div>The Login was successful</div>
}
1 голос
/ 26 сентября 2011

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

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