变量未使用 asp.net mvc 赋值



这是我视图代码的一部分:

<%int imageTypSelected = 0; %>  

<div class="imageToEdit" >
         <img src='<%: Url.Action("getImg", "Product", new{ShopId = Model.Id}) %>'   alt="" />
         <a href="#" id="1" onclick="jQuery('#dialog').dialog('open'); '<%:imageTypSelected=1 %>'; return false;  ">G</a>             
    </div>
    <div   >
         <img src='<%: Url.Action("getImg_Alt1", "Product", new{ShopId = Model.Id}) %>'   alt="" />
         <a href="#" id="2"  onclick="jQuery('#dialog').dialog('open'); '<%:imageTypSelected=2 %>'; return false; " >G</a>           
    </div>
    <div  >
         <img src='<%: Url.Action("getImg_Alt2", "Product", new{ShopId = Model.Id}) %>'   alt="" />
         <a href="#" id="3"  onclick="jQuery('#dialog').dialog('open'); '<%:imageTypSelected=3 %>'; return false; ">G</a>            
    </div>

 <div id="dialog" title="A" >
          <% using (Html.BeginForm("changeProductImage", "Product", new { @Id = Model.Id, @selectedHyperLink = imageTypSelected }, FormMethod.Post, new { enctype = "multipart/form-data" }))
               {%>
                <p><input type="file" id="fileUpload" name="fileUpload" style="width:23;"/> </p>
                <p><input type="submit" value="B" /></p>
          <% } %>
       </div>

首先单击变量imageTypSelected必须设置为 1。按秒必须设置为 3,单击第三秒必须设置为 3。然后这个变量发布到控制器中的一个方法。但一直以来,只有值3分配给变量,单击其他不会影响变量。怎么了?

您混淆了服务器端代码和客户端代码。

imageTypSelected仅存在于服务器上。当您单击浏览器中的链接时,它不会更改。你需要完全在javascript中做到这一点:

从表单中删除以下内容:

@selectedHyperLink = imageTypSelected

并添加此隐藏字段:

<input type="hidden" id="selectedhyperlink" name="selectedhyperlink" />

添加此 javascript 函数,它将隐藏字段设置为正确的值:

<script type="text/javascript">
    function changeImageType(imageType) {
        jQuery("#selectedhyperlink").val(imageType);
        jQuery("#dialog").dialog("open");
        return false;
    }
</script>

从您的链接调用此函数:

<a href="#" id="2" onclick="return changeImageType(2);">G</a>  

最新更新