I have a Home ViewModel class which contains others class:
public class HomeVM
{
public ProductSearchRequest ProductSearchRequest { get; set; }
//Other class
//Other class
//Other class
}
My home/Index view has @model HomeVM, and there I have a search text input:
@using (Html.BeginForm("Search", "Product"))
{
@Html.TextBoxFor(m => m.ProductSearchRequest.SearchText)
<input type="submit" value="Search" />
}
But in my Product/Search I need to receive only ProductSearchRequest because there is other pages that uses other ViewModel but contains ProductSearchRequest.
I’m trying this:
public ActionResult Search(ProductSearchRequest request)
{
var response = new ProductSearchResponse
{
SearchText = request.SearchText,
Products = GetProductsByName(request.SearchText)
};
return View(response);
}
but it doesn’t work.. request.SearchText is always null..
How can I do this?
This is just a stab in the dark, but your action, try calling the parameter ‘ProductSearchRequest’
Or how about putting your whole form in a view for that action I.e. ‘Search’ that takes the ‘ProductSearchRequest’ as model?