mvc从dropdown和datetimepicker获取和发送数据

时间:2014-07-01 09:23:32

标签: asp.net-mvc asp.net-mvc-4 datetimepicker html.dropdownlistfor

大家好我有问题。我有一个由下拉文本框和datetimepicker组成的表单。我可以从我的模型填充我的下拉列表,但我无法将数据发布到数据库。这是我的代码

我的控制器代码,这是选择并在视图中显示的数据

public ActionResult orderProduct()
    {
        Repository<OrderProduct> _ro = new Repository<OrderProduct>();
        IEnumerable<OrderProduct> _orderProduct = _ro.All().OrderByDescending(o => o.id);

        return View(_orderProduct);
    }

我正在填写数据库中的下拉列表

public ActionResult addOrderProduct()
    {
        /*
        Repository<Workshop> _rw = new Repository<Workshop>();
        IEnumerable<Workshop> _workshop = _rw.All().OrderByDescending(o => o.id);



        IEnumerable<SelectListItem> _selectList = from w in _workshop
                                                  select new SelectListItem {
                                                      Text = w.name,
                                                      Value = w.id.ToString()
                                                  };
        */

        Repository<Workshop> _rw = new Repository<Workshop>();
        IEnumerable<SelectListItem> _workshopSelectListItem = _rw.All().AsEnumerable().Select(s => 
            new SelectListItem { 
                Text = s.name, Value=s.id.ToString()
            });


        ViewData["dropdown"] = _workshopSelectListItem;

        return View();
    }

这里我试图将我的数据发布到数据库。我无法从下拉列表和datetimepicker中选择数据,也无法通过手动编写来发布此数据。

public ActionResult orderProductAdd(int adet, float cmt)
    {
        Repository<OrderProduct> _rp = new Repository<OrderProduct>();
        OrderProduct _orderProduct = new OrderProduct { workshopId = 1, orderId = 1, value = adet, shipDate = new DateTime(2005, 02, 01), cmt = cmt };

        return RedirectToAction("orderProduct");
    }

这是我的模特

 [Table("OrderProduct")]
public class OrderProduct
{


    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int id { get; set; }


    public int orderId { get; set; }
    [ForeignKey("orderId")]
    public virtual Order order { get; set; }

    public int workshopId { get; set; }
    [ForeignKey("workshopId")]
    public virtual Workshop workshop { get; set; }

    public int value { get; set; }
    public float cmt { get; set; }

    public DateTime shipDate { get; set; }

    /*
     [id]
  ,[orderId]
  ,[workshopId]
  ,[value]
  ,[cmt]
  ,[shipDate]
     */
}

这也是我的观点&#34; addOrderProduct&#34;

   <form action="/Order/orderProductAdd" class="form-horizontal">


    <div class="control-group">
        <label class="control-label">Atölye Seçiniz</label>
        <div class="controls">
           @Html.DropDownList("dropdown",(IEnumerable<SelectListItem>)ViewData["dropdown"],"secim yapınız", new { @class = "span6 chosen" })
            @*<select class="span6 chosen" data-placeholder="Choose a Category" tabindex="1">
                <option value=""></option>
                <option value="Category 1">A1</option>
                <option value="Category 2">A2</option>
                <option value="Category 3">A3</option>
                <option value="Category 4">A4</option>
            </select>*@
        </div>
    </div>

    <div class="control-group">
        <label class="control-label">Adet Giriniz</label>
        <div class="controls">
            <input type="text" class="span6 " name="adet" />
            <span class="help-inline">Sadece sayı giriniz</span>
        </div>
    </div>

    <div class="control-group last">
        <label class="control-label">İhracat Tarihi</label>
        <div class="controls">
            <div id="ui_date_picker_inline"></div>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label">Cmt</label>
        <div class="controls">
            <input type="text" class="span6 " name="cmt" />
        </div>
    </div>

    <div class="form-actions">
        <button type="submit" class="btn btn-success">Onayla</button>
        @*<button type="button" class="btn">Cancel</button>*@
    </div>


</form>

我该如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:1)

DDL中的第一个参数(下面)是传递回服务器的已分配参数。当您调用操作时,您没有传递参数dropdown。您只需要调用int adet, float cmt,而不是名为dropdown

的参数
@Html.DropDownList("dropdown",(IEnumerable<SelectListItem>)ViewData["dropdown"],
"secim yapınız", new { @class = "span6 chosen" })

因此,请将您的代码更新为以下内容:

public ActionResult orderProductAdd(int adet, float cmt, string dropdown){
    // DO SOMETHING HERE
}

我看不到为查询的DATETIME部分构造的输入控件,但它与上面的类似。确保INPUT的名称与传递回服务器的参数相匹配。