Pass dropbox value to a HttpGet action submit button click?

纵然是瞬间 提交于 2019-12-25 06:57:21

问题


Basically I'm trying to pass the value of my dropbox to a get action. The submit-button re-directs to the correct action , but what is the correct way to add the value of the dropbox with the re-direction?

My view:

 @model TrackerModel
     @using (Html.BeginForm("MyAction", "MyController", FormMethod.Get, new { ???}))
     {
     <div>
        <strong>@Html.LabelFor(m => m.CustomerName)</strong>
         @Html.TextBoxFor(m => m.CustomerName, new { type = "hidden", @class = "customer-picker" })
     </div>
     <button class="styledbutton" onclick="window.location.href='/Tracker/Index'">Cancel</button>
     <button type="submit" value="submit" id="selectCustomer-button" class="styledbutton">Submit</button>
 }
 [HttpGet]
 public ActionResult MyAction(IPrincipal user, Tracker model)

Customer-picker

 $(document).ready(function () {
CustomerPicker();

});

function CustomerPicker() {

$('.customer-picker').select2({
    placeholder: 'Select customer',
    minimumInputLength: 1,
    ajax: { // instead of writing the function to execute the request we use Select2's convenient helper
        url: '/JsonData/GetCustomers',
        type: 'POST',
        dataType: 'json',
        data: function (term) {
            return {
                query: term // search term
            };
        },
        results: function (data) { // parse the results into the format expected by Select2.
            // since we are using custom formatting functions we do not need to alter remote JSON data
            return { results: data };
        }
    },
    formatResult: function (data) {
        return data;
    },
    formatSelection: function (data) {
        return data;
    }
});

}

I was expecting the value to be within my Tracker model parameter in the action, but this returns nulls. Also I'm not sure what to place in the "new" parameter in the form tag?

I also tried the following but all I get returning to the controller is text:"".

   @Html.TextBoxFor(m => m.CustomerName, new { type = "hidden", @id = "selectedCustomer", @class = "customer-picker" })

     <script type="text/javascript">
$(function () {
    $("#Form1").submit(function (e) {
        alert("boo");
        e.preventDefault();
        var selectCustValue = $("#selectedCustomer").val();
        $.ajax({
            url: '/CalibrationViewer/SentMultipleCalsToCustomer',
            data: { text: selectCustValue }
        });
    });
});


回答1:


OK got it,

   var selectCustValue = $("#s2id_CustomerName span").text();

Found another piece of code the used the customer-picker and the javascript associated with view used the above.

I viewed the page source and it still show's both id and name as CustomerName, it has something to do with the "Select 2" helper.

I may get slated for marking this as the answer, considering I should have figured it out earlier, but there you have it !



来源:https://stackoverflow.com/questions/25380135/pass-dropbox-value-to-a-httpget-action-submit-button-click

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!