如何从我的timepicker中获取所选时间并将其分配给TextBox值?

时间:2014-03-15 19:41:32

标签: c# jquery

我正在尝试从我的timepicker中获取所选时间,然后将其指定为@ Html.TextBox()值attritibute中的值。我尝试使用这行代码:@(timeValue)= timepicker('getTime')...但它不会在timeValue变量中存储值。然后我尝试了timeValue = timepicker('getTime')并获得有关未定义datepicker的错误消息。下面的代码工作正常,除了我需要从我的timepicker获取所选值的部分。

如何从我的timepicker中获取所选时间并将其分配给TextBox值? 感谢您对此提供的任何帮助。

            string date = "date" + course.Index.ToString();
            string time = "time" + course.Index.ToString();
            string timeValue = "";

                                 <script type="text/javascript">




                                     $(function () {
                                         $('input[name= @(date) ]').datepicker();
                                         $('input[name=@(time)]').timepicker({});
                                         @(timeValue) = timepicker('getTime');
                                     });


    </script> 


            string day = DateTime.Now.ToShortDateString();
         @Html.TextBox(name: time, value: timeValue, htmlAttributes: new { id = time, @class = "TextBoxCss" })

2 个答案:

答案 0 :(得分:0)

您无法将javascript分配给razor变量。而是使用jquery来分配值。

但首先,我认为你没有正确使用@ Html.TextBox。

尝试,

@Html.TextBox("time", null, new {id = "time", @class = "TextBoxCss"})

然后是jquery,

 var timeValue = timepicker('getTime');
 $("#time").val(timeValue);

<强>编辑:

使用jquery,ajax表单序列化。 E.g。

$("#sendTimeButton").on("click", function () { // or use on form submit

            $.ajax({
                type: "POST", // or GET
                url: "@Url.Action("Edit", "ControllerName")",

                data: $("#myForm").serialize(), //you can use json also JSON.Stringtify

                cache: false,
                success: function () {


                },
                error: function () {
                    console.log("error");
                }
            });
        });

您也可以使用数组:

var timeArray = new Array();
$(".TextBoxCss").each(function(){
   timeArray.push($(this).val())   // loop through all text boxes with class "TextBoxCss"
});

然后数据部分是这样的:

data: {times: timeArray},  // "times" refer to the argument in your controller

然后在你的控制器中:

public ActionResult Edit(int id,  string[] times)

答案 1 :(得分:0)

所以我保持代码非常像我原来的帖子......

   string date = "date" + course.Index.ToString();
    string time = "time" + course.Index.ToString();


                  <script type="text/javascript">

                 $(function () {
                 $('input[name= @(date) ]').datepicker();
                 $('input[name=@(time)]').timepicker({});

                                     });


               </script> 


            string day = DateTime.Now.ToShortDateString();



         @Html.TextBox(name: time, value: "Set Time", htmlAttributes: new { id = time, @class = "TextBoxCss" })
         @Html.TextBox(name: date, value: day, htmlAttributes: new { id = date, @class = "TextBoxCss" })

然后在我的控制器中我这样做,我可以创建一个循环来迭代列表中的所有texbox:

   [HttpPost]
    public ActionResult Edit(int id,  FormCollection formCollection)
    {

        String theTimes = Convert.ToString(formCollection["time0"]);

}