Razor 获取HTML5日期输入字段并传递给.net控制器
在我的razor页面上,我有一个简单的日期选择器,如下所示:Razor 获取HTML5日期输入字段并传递给.net控制器,razor,asp.net-core-mvc,asp.net-core-2.0,Razor,Asp.net Core Mvc,Asp.net Core 2.0,在我的razor页面上,我有一个简单的日期选择器,如下所示: <input type="date" name="lessonsStart"> <a asp-action="LessonIndex" asp-route-id="@item.Id">@Html.DisplayFor(modelItem => item.Name)</a> public IActionResult LessonIndex(datetime startDate) {
<input type="date" name="lessonsStart">
<a asp-action="LessonIndex" asp-route-id="@item.Id">@Html.DisplayFor(modelItem => item.Name)</a>
public IActionResult LessonIndex(datetime startDate) {
var response = getLessons(startDate);
return response.Results;
}
是否有我需要使用的特定格式
请注意,模型中未使用日期,只需将其发送给控制器即可
谢谢 假设这与mvc相关,控制器将有一个与post相关联的方法,您将执行post将表单中的数据返回控制器。这使用javascript将数据发布到LessonIndex方法
<div class="demo-section k-content">
<h4>Remind me on</h4>
@(Html.Kendo().DateTimePicker()
.Name("datetimepicker")
.Value(DateTime.Now)
.HtmlAttributes(new { style = "width: 100%", title = "datetimepicker" })
.DateInput()
)
</div>
请注意,模型中未使用日期,只需将其发送给控制器即可 您可以使用ajax将日期作为QueryString传递给控制器中的方法 下面是测试示例
<input type="date" name="lessonsStart" id="lessonsStart">
@section Scripts
{
<script type="text/javascript">
$("#lessonsStart").change(function () {
var inputDate = new Date(this.value).toDateString();
$.ajax({
type: "post",
url: "/ControllerName/lessonindex?startdate=" + inputDate,
success: function () { }
});
});
</script>
}
对不起,什么是剑道?感谢“lessonStart”是否与您的razorpage或controller中的有效名称相对应?因为你把mvc列为你的目标标签之一。我知道你想做什么,但如果你能提供你的控制器的样子,我需要一些澄清和更多的资料。还有,您是否有与所讨论的页面相关联的模型?@mvermef lessonStart正是我给html元素的名称。这是一个RazorPage或Mvc控制器,你想让它返回到它吗?实现1个javascript或2个post表单的2种方法。@mvermef我还在控制器中添加了需要日期选择器中的日期的方法。请注意,没有与此视图关联的模型。您好,@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf做什么?我以前从未见过这样的用法。需要吗?谢谢我尝试了代码,点击Go按钮后,出现以下错误:localhost:44304/LessonController/LessonIndex?lessonStart=无效%20DateRight,因为路由应该是Lesson/LessonIndex?lessonStart=发送的日期。至于XSRF,它的跨站点请求伪造预防措施,并不是真正需要的,而是通过javascript发布所有东西的好主意。如果您在哪里使用,这会自动考虑,但是由于您在没有表单的情况下执行此操作的方式很好,因此必须使用javascript。如果LessonController确实出现在url中,则表示该路由设计错误或格式不正确。哦,谢谢你,我不知道你必须删除“controller”这个词。谢谢现在可以了!
<input type="date" id="lessonStart" name="lessonStart" />
<input type="Submit" id="PostButton" name="PostButton" Value="Go" />
@section Scripts{ // razor section at the bottom of mvc page 'cshtml'.
<script type="javascript">
$(function(){
$("#PostButton").click(function(){
var url = '@Url.Action("LessonIndex", "Lesson")'; //assuming controller is named Lesson
var date= new Date(this.value).ToDateString();
$.ajax({
url: url,
type: "POST",
data: "lessonStart=" + date,
headers:{
"RequestVerificationToken": '@GetAntiXsrfRequestToken()'
},
success: function(response){
console.log(response);
},
error: function(e){
console.log(e.error);
}
});
});
}
</script>
}
public class LessonController : Controller{
[HttpPost]
[AutoValidateAntiforgeryToken]
public IActionResult LessonIndex(DateTime lessonStart){
var response = getLessons(lessonStart);
return View(response.results);
}
}
<input type="date" name="lessonsStart" id="lessonsStart">
@section Scripts
{
<script type="text/javascript">
$("#lessonsStart").change(function () {
var inputDate = new Date(this.value).toDateString();
$.ajax({
type: "post",
url: "/ControllerName/lessonindex?startdate=" + inputDate,
success: function () { }
});
});
</script>
}
[HttpPost]
public IActionResult LessonIndex(DateTime startDate)
{
return Json(startDate);
}