문제

나는 건물 MVC5 웹 응용 프로그램입니다.레이아웃에서 템플릿에 있는 드롭다운 목록에 포함하는 목록의 사용자 이름을 사용합니다.이 드롭다운 레이아웃에서 템플릿에 액세스할 수 있습니다 내에 모든 전망에서 상속합니다.

사용자가 로그인할 때 사이트와 인증을 통과하는 것에 인덱스 메서드에서 컨트롤러입니다.이 방법은 널 ID 의 유형 int.사용자가 로그인할 때,id 전달되는 인덱스 메소드는 항상 null 입니다.내가 다음에 로그인한 사용자 ID 와 쿼리를 얻을 자신의 정보(아래 참조).

    public ActionResult Index(int? id)
    {
        DashboardViewModel model = new DashboardViewModel();

        if(id == null || id == 0)
        {
            User user = _userService.GetUserByID(Convert.ToInt32(User.Identity.GetUserId()));
            model.SelectedUser = user;
        }
        else
        {
            model.SelectedUser = _userService.GetUserByID(id.Value);
        }

        return View(model);
    }

나는 그들의 정보로 뷰 모델과 다음 보기는 다음을 씁니다 자신의 이메일 주소 UI.

@model MyApp.UI.ViewModels.DashboardViewModel

<h1>@Model.SelectedUser.email</h1>

면 사용자가 UI,그들이 선택할 수 있습 다른 사용자에서 드롭다운 목록입니다.그들이 그렇게 할 때,선택된 사용자 이메일 주소를 교체해야 그들의 것입니다.

이 프로세스는 다음과 같이 작동합니다.사용자가 선택하는 이름 드롭다운 목록에서,JQuery 함수가 호출

$(document).ready(function () {

    $("#UserID").change(GetUser);

    function GetUser() {

        $.ajax({
            type: "GET",
            url: '/Dashboard/Index/',
            data: { id: $(this).val() },
            error: function () {
                alert("An error occurred.");
            },
            success: function () {
                alert("success");
            }
        });
    }
});

이 기능을 전달합 ID 드롭다운 목록에서 다시 인덱스 메서드에서 컨트롤러입니다.인덱스 방법,이번에 실현 id 가 NULL 이 아니고,따라서 쿼리를 수행하여 얻을 선택한 사용자 정보에 기초하여,자신의 id(인덱스를 참조하십시오 방법이 있습니다.)

세부 사항은 다시 넣으로 뷰 모델로 전달됩니다.모델 통과를 볼 수 포함 선택한 사용자 정보 및를 작성해야 자신의 이메일 주소 UI

@model MyApp.UI.ViewModels.DashboardViewModel

<h1>@Model.SelectedUser.email</h1>

그러나 이것은 어디에 내 문제입니다.지할 수 있는 단계를 통해 내 코드는 모든 것을 보고 예상대로 작동 상관없이 사용자가 선택한 드롭다운 목록에서,그것은 결코 변하지 않 이메일 주소가 기록됩니다.

이것은 이상할 수 있기 때문에 선택한 사용자의 정보로 통과되는 시점,그러나,UI 업데이트하지 않 이메일 주소입니다.

긴 게시물에 대한 죄송하지만 주고 싶어 많은 세부 사항에 가능한 문제를 해결하기 위해 이 같은 작업을했습니다 이를 통해 일제는 성공합니다.

어떤 도움이 될 것이 정말 감사합니다.

감사합니다.

도움이 되었습니까?

해결책

지금까지 내가 당신을 볼 수 있을 사용하지 않 h $.ajax 전화 결과는 어디든지.당신은 그냥 보고하고 그것을 이루어집니다.필요하신 데이터를 사용하여 결과에서,하지만 당신은 반 전체 ViewPartialView 그것은 아마 더 나은 단지로 리디렉션에서 드롭다운 변화:

$("#UserID").change(function()
    window.location.href = "/Dashboard/Index/" + $(this).val();
);

사용할 수도 있습니다 @Url.Action("Index", "Dashboard") 피 하드 코딩 url.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top