0

여러 개의 양식이있는보기가 있습니다. 각각 하나의 제출은 특정 값의 숨겨진 필드를 제출해야하며 모든 모델은 같은 모델을 공유해야합니다. 내 컨트롤러에서보기를 렌더링하기 전에 값을 설정했지만 "게시"방법 중 하나에 해당 값이 필요합니다. 나머지는 동일한 숨겨진 필드를 다른 값으로 제출해야합니다. 여기제출하기 전에 값을 설정하면 컨트롤러에 전송되지 않습니다.

나는 hiddenInput EventCommand

@using (Html.BeginForm("ContinueWithUpload", "Odometer", FormMethod.Post, new { id = "form2" })) 
{ 
    @Html.HiddenFor(m => m.EventCommand) 
    <div> 
     <button type="submit" name="upload-excel" value="upload-excel" id="excel-upload" class="btn btn-success">Continue Upload</button> 
    </div> 
} 

와 뷰의 단지 두 번째 양식을 표시하고하는 것은 지금까지 내가 자바 스크립트를 설정하려고하지만

$(function(){ 
    $("#excel-upload").on("click", function (e) { 
     $("#EventCommand").val("upload-excel"); 
    }); 
} 

작동하지 않습니다 그것을하는 방법에 대해 읽고, 내가 해결할 수있는 해결 방법과 함께 ViewData와 솔루션을 발견

@Html.HiddenFor(m => m.EventCommand) 
ViewData["EventCommand"] = "upload-excel" 

어떤 도움을 받으실 수 있습니다.

+0

값을 저장 하시겠습니까? 'var value = $ ("# EventCommand"). val ("upload-excel"); ' – nurdyguy

+0

여기서 무엇을하려고하는지 명확하지 않습니다. 숨겨진 입력 값을 설정하는 스크립트가 필요한 이유는 무엇입니까? 모델을보기에 전달하기 전에 컨트롤러의'EventCommand' 속성 값을 설정하기 만하면됩니다. –

+0

동일한보기 배수 양식을 사용할 수 없습니다. , 그리고 같은 모델을 가지고 있기 때문에 하나의 섹션에서 EvenCommand는 컨트롤러에서 오는 값을 가지고 있고 다른 모델은 다른 하나를 제출해야합니다. – Heinrich

답변

0

때문입니다. 숨겨진 입력을 부분 뷰 "_HiddenFields"에 넣고 렌더링하기 전에 ViewDataDictionary 값을 전달했습니다. 그것으로 내가 생성하고 싶은 html의 PartialView에 제한을 두는 것을 허용했다. 아래는 생각이다 :

@using (Html.BeginForm("ContinueWithUpload", "Odometer", FormMethod.Post, new { id = "form2" })) 
{ 
    @Html.Partial("HiddenFields/_HiddenFields", Model, new ViewDataDictionary { { "EventCommand", "excel-upload"} }) 
} 

당신이 둘은을 ViewData이있는 경우에도 작동하지 않기 때문에 내가 처음 두 줄을 주석 보면 내 부분도이

@if ((string)Html.ViewData["EventCommand"] == "excel-upload") 
{ 
    @*@Html.HiddenFor(m => m.EventCommand)*@ 
    @*@Html.HiddenFor(m => m.EventCommand, new {@value = "excel-upload"})*@ 
    <input id="EventCommand" name="EventCommand" type="hidden" value="excel-upload" /> 
} 
else 
{ 
    @Html.HiddenFor(m => m.EventCommand) 
} 

같다 EventCommand 필드와 같은 키.

1

버튼을 클릭 할 때 동일한 ID와 코드로 숨겨진 파일이 여러 개있는 것처럼 보입니다. 당신은 버튼을 클릭하는 형태 내에서 정확한 숨겨진 필드를 얻기 위해 시도해야합니다 : 면도기가 렌더링하는 HTML이 같은 모델을 사용하여 내 HiddenInput에 대해 동일

$(function() 
{  
    $("#excel-upload").on("click", function (e) { 
     $(this).parents("form #EventCommand").val("upload-excel"); 
     return true; 
    }); 
} 
0
Use following code: 

@using (Html.BeginForm("ContinueWithUpload", "Odometer", FormMethod.Post, new { id = "form2",onsubmit = "return myJsFunction(this)" })) 
{ 
    @Html.HiddenFor(m => m.EventCommand) 
    <div> 
     <button type="submit" name="upload-excel" value="upload-excel" id="excel-upload" class="btn btn-success">Continue Upload</button> 
    </div> 
} 


Add following javascript function: 

function myJsFunction(this) 
{ 
$(this).find('#EventCommand').val("upload-excel"); 
     return true; 
}