了解MVC模型中的数据交换(?)

时间:2018-10-15 11:29:44

标签: asp.net-mvc

感谢所有人回答我的问题,特别感谢保罗先生为我们提供了出色的例子。 首先,我不太确定自己缺少什么,因此我的头衔很可能会引起误解或不好。随时进行更正。

我正在尝试使用ajax进行分页。我正在显示的是按降序排列的博客文章列表。一个视图提供五个条目,然后按“下一步”图标,您可以看到另外五个。真的很经典。

一般来说,我是编程新手,更不用说ajax了,所以我发现了this article

我很难理解这部分。 对于_SearchForm.cshtml中的剃刀,他的内容如下:

@model CodeShare.Library.Models.SearchViewModel
@*@using (Html.BeginUmbracoForm("SubmitSearchForm", "Search", FormMethod.Post))*@

@using (Ajax.BeginForm("SubmitSearchForm", "Search", null, new AjaxOptions
{
 HttpMethod = "POST",
 InsertionMode = InsertionMode.Replace,
 UpdateTargetId = "search-results"
}))
{
 @Html.HiddenFor(m => m.DocTypeAliases)
 @Html.HiddenFor(m => m.FieldPropertyAliases)
 @Html.HiddenFor(m => m.PageSize)
 @Html.HiddenFor(m => m.PagingGroupSize)
 @Html.TextBoxFor(m => m.SearchTerm, new { placeholder = "Search..." })
<button id="submit-button">Search</button>

<div id="search-results">
    @{ Html.RenderAction("RenderSearchResults", "Search", new { Model = Model.SearchResults });}
</div>
}

我有点了解这里的基本结构。他使用 Ajax.BeginForm 调用必要的部分,并在调用该部分时动态地呈现它,并将搜索结果作为参数传递下来。

我不明白的是:

1) Html.HiddenFor Html.TextBoxFor 提供的这些值如何处理到Model.SearchResults中。

2)这可能真的很基本,但是您能告诉我这些格式是什么吗? ・ m => m.PageSize 这称为lambda函数吗?为什么在C#中经常使用这种格式?

1 个答案:

答案 0 :(得分:0)

  

1)Html.HiddenFor和Html.TextBoxFor提供的这些值如何   提交给Model.SearchResults。

由于您使用的是HTML表单,因此提交表单后,表单中包含的所有输入都将被提交。当您使用Html.HiddenFor和Html.TextBoxFor时,您正在生成输入。因此,提交表单时,这些输入也将提交。重要的是要注意,并非所有的Razor帮助程序功能都可以执行此操作。例如,Html.DisplayFor将不会与表单一起提交,因为它不会生成输入。我建议您阅读更多关于numpy.loadtxt()和更多有关Html helper functions on the MSDN的信息。

  

2)这可能是非常基本的,但是您能告诉我这些格式是什么   **是..?・ m => m.PageSize这称为lambda函数吗?为什么是这样   ** C#中经常使用的格式?

是的,这是一个lambda表达式。它们对于编写LINQ查询和其他东西非常有用。来自form submission on W3

  

lambda表达式描述了一种模式。从数学上讲,lambda   微积分以模式描述了世界。在C#中,lambda是一个函数   使用清晰明了的语法。

basic article on DotNetPerls