【问题标题】:How to update results with start date and end date inputed from user如何使用用户输入的开始日期和结束日期更新结果
【发布时间】:2018-12-21 18:07:36
【问题描述】:

我有一个包含日期和名称的表格,当用户插入以限制这两个日期之间的结果时,我有 2 个日期 Datum1 和 Datum2,但它不起作用。这 2 个日期在单独的模型中,我创建了单独的控制器。我不需要将这些日期保存在我的数据库中只是为了限制输出这是我的控制器:

   [HttpGet]
    // GET: PregledPoDatumu
    public ActionResult Index()
    {
        DataTable dtblRezultat = new DataTable();
        PregledPoDatumu pregledPoDatumu = new PregledPoDatumu();
        using (SqlConnection sqlCon = new SqlConnection(
             ConfigurationManager.ConnectionStrings["TestCS"].ConnectionString))
        {
            sqlCon.Open();
            SqlDataAdapter sqlDa = new SqlDataAdapter("SELECT * FROM Kontrola ORDER BY Datum", sqlCon);
            sqlDa.Fill(dtblRezultat);

        }

        return View(dtblRezultat);
    }


    [HttpGet]

    // GET: PregledPoDatumu/Create
    public ActionResult Create()
    {
        return View(new PregledPoDatumu());
    }

    // POST: PregledPoDatumu/Create
    [HttpPost]
    public ActionResult Create(PregledPoDatumu pregledPoDatumu)
    {

        DataTable dtblRezultat = new DataTable();
        using (SqlConnection sqlCon = new SqlConnection(
            ConfigurationManager.ConnectionStrings["TestCS"].ConnectionString))
        {
            sqlCon.Open();
            if (pregledPoDatumu.Datum1 > pregledPoDatumu.Datum2)
            {
                ModelState.AddModelError("Datum1", "start date must be before end date");
                return View();
            }
            if(pregledPoDatumu.Datum1 > DateTime.Now)
            {
                ModelState.AddModelError("Datum1", "Unesite datum prije današnjeg");
                return View();
            }
            if(pregledPoDatumu.Datum2 > DateTime.Now)
            {
                ModelState.AddModelError("Datum2", "Unesite datum do današnjeg");
                return View();
            }
            if(pregledPoDatumu.Datum1 == DateTime.MinValue){
                ModelState.AddModelError("Datum1", "Unesite datum ");
                return View();
            }
            if (pregledPoDatumu.Datum2 == DateTime.MinValue)
            {
                ModelState.AddModelError("Datum2", "Unesite datum ");
                return View();
            }






            string query = "SELECT * FROM Kontrola where Datum > @Datum1 and Datum < @Datum2";
            SqlDataAdapter sqlDa = new SqlDataAdapter(query, sqlCon);
            sqlDa.SelectCommand.Parameters.AddWithValue("@Datum1", pregledPoDatumu.Datum1);
            sqlDa.SelectCommand.Parameters.AddWithValue("@Datum2", pregledPoDatumu.Datum2);
            sqlDa.Fill(dtblRezultat);


        }
        return RedirectToAction("Index");
}

我应该改变什么,所以当用户输入 1/1/2014 和 1/1/2017 以仅显示这两个日期之间的结果时?在这种情况下,我已经完成了我的表格没有刷新并且仍然在表格中显示所有结果?

型号:

namespace WebApplication6.Models
{
    public class PregledPoDatumu
    {
        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [DataType(DataType.Date)]
        public DateTime Datum1 { get; set; }

        [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
        [DataType(DataType.Date)]
        public DateTime Datum2 { get; set; }
    }
}

【问题讨论】:

  • 您好,欢迎来到 SO。您发布的代码与您提出的问题无关。
  • 你能告诉我们你的PregledPoDatumu模特吗?
  • 您好,我已添加模型。你还需要什么吗?

标签: c# asp.net visual-studio model-view-controller


【解决方案1】:

问题在于 Post 方法中的 return RedirectToAction("Index")。这样做是重定向到索引,但您没有传递过滤后的数据表。

要解决此问题,您可以更改为 return View("Index", dtblRezultat),这将从 Post 方法返回 Index 视图并将数据表 dtblRezultat 传递给视图。

还有其他选项,您可以修改Index 操作以获取日期参数(或模型)并在Index 操作中进行过滤。

【讨论】:

    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多