예를 들어 두 개의 링크가 있습니다. 영어와 스페인어. 사용자가 영어 링크를 클릭하면 세션에서 언어를 "영어"로 설정해야합니다. <HttpPost()> 내보기 페이지에서 작동하지 않습니다
다음
내 영문 코드<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript">
function SetLanguageSpanish() {
document.getElementById("Home_Language").value = 'Spanish';
document.getElementById("frmHome").submit();
}
function SetLanguageEnglish() {
/*var obj = document.getElementById("LangEnglish");*/
// <% Session("Language") = "English"%>;
document.getElementById("Home_Language").value = 'English';
document.getElementById("frmHome").submit();
}
</script>
<div class="vmenu">
<form id="frmHome" action="Home" method="post"">
<a id="LangEnglish" href="/" onclick="SetLanguageEnglish();" >English</a>
<a id="LangSpanish" href="/" onclick="SetLanguageSpanish();"> Spanish</a>
<h3><%= Html.Label(Model.SubTitle) %></h3>
<ul class="sbe">
<li class="sbe"><a href="/test1"><%= Model.Menu1%></a></li>
<li class="sbe"><a href="/Test2"><%= Model.Menu2%></a></li>
<li class="sbe"><a href="/Test3"><%= Model.Menu3%></a></li>
<li class="sbe"><a href="/Test4"><%= Model.Menu4%></a></li>
<li class="sbe"><a href="/Test5"><%= Model.Menu5%></a></li>
</ul>
<input id="Home_PageName" name="PageName" type="hidden" value="" />
<input id="Home_Language" name="Language" type="hidden" value="" />
<input id="Home_PageTitle" name="PageTitle" type="hidden" value="" />
<input id="Home_SubTitle" name="SubTitle" type="hidden" value="" />
<input id="Home_Menu1" name="Menu1" type="hidden" value="" />
<input id="Home_Menu2" name="Menu2" type="hidden" value="" />
<input id="Home_Menu3" name="Menu3" type="hidden" value="" />
<input id="Home_Menu4" name="Menu4" type="hidden" value="" />
<input id="Home_Menu5" name="Menu5" type="hidden" value="" />
</form>
</div>
</asp:Content>
하고 내 컨트롤러 클래스 코드는 다음과 같다 :
공용 클래스 HomeController 상속 System.Web.Mvc.Controller
' GET: /Home
<OutputCache(Duration:=1800, VaryByParam:="none")>
Function Index() As ActionResult
Try
Dim oHome As New Home.Home
Dim oHomeModel As New Home.HomeVM
If (HttpContext.Session("Language") Is Nothing) Then
HttpContext.Session("Language") = "English"
End If
oHomeModel.Language = HttpContext.Session("Language").ToString()
Return View("Index", GetCaption(oHomeModel))
Catch ex As Exception
Return Nothing
End Try
End Function
<HttpPost()>
<OutputCache(Duration:=1800)>
Function Index(ByVal oHomeModel As Home.HomeVM) As ActionResult
Try
If ((oHomeModel.Language IsNot Nothing) Or (oHomeModel.Language.ToString() <> "")) Then
HttpContext.Session("Language") = oHomeModel.Language.ToString()
End If
Return View("Index", GetCaption(oHomeModel))
Catch ex As Exception
Return Nothing
End Try
End Function
어떤 이유로 내보기 페이지의 링크를 클릭 할 때. Controller 클래스 get이 실행 중입니다. 이 때문에 세션의 값이 새로 고쳐지지 않습니다. 아무도 이것이 왜 일어나고 있는지 제안 할 수 있습니까?
다음은 내 모델 클래스입니다.
네임 스페이스 홈 공공 클래스 HomeVM는 서버 측과 클라이언트 측 코드를 혼합하는 것 나에게 보이는
'The following property are used as parameter
Public Property PageName As String
Public Property Language As String
'The following are the form caption peroperty
Public Property PageTitle As String
Public Property SubTitle As String
Public Property Menu1 As String
Public Property Menu2 As String
Public Property Menu3 As String
Public Property Menu4 As String
Public Property Menu5 As String
End Class
스크립팅 코드를 제거하더라도 여전히 게시되지 않습니다. –
@VinodNair 사용자가 링크를 클릭 할 때'POST '를 눌러 선택한 언어를 변경할 수 있다고 말하는 것 같습니다. 그렇다면 첫 번째 문제는 링크이며 포스트 백이 발생하지 않는다는 것입니다. 함수에서 포스트 백을 발생 시키려면'document.getElementById ("frmHome"). submit();'을 사용할 수 있지만 게시하기 전에 제출할 값을 설정하여 서버에서 읽을 수 있도록하십시오. – Craig
Can 당신은 내게 그것에 해결책을 제공합니다. 샘플 코드 –