2013-02-20 2 views
0

У меня есть страница cshtml, где я прошу пользователя предоставить некоторые входные данные, которые затем мне нужно объединить в строку для построения динамического запроса LINQ в моем контроллере. Этот вид НЕ использует модель. Вот мой html-код.конкатенировать строку из нескольких текстовых полей ввода

<div id="filter"> 
Enter a customer name. It can be a part of a name to get broader results. (optional) 
<br /> 
<input type="text", id="customer", value="") /> 
<br /> 
Enter a case status (OPEN or CLOSED), or leave blank to get both. (optional) 
<br /> 
<input type="text", id="status", value="") /> 
<br /> 
Enter a date range to filter by date. (optional) 
<br /> 
Start Date 
<input type="text", id="startdate", value="") /> 
End Date 
<input type="text", id="enddate", value="") /> 
<br /> 
Enter a PromoID (optional) 
<br /> 
<input type="text", id="promoid", value="") /> 
<br /> 
Enter a Complaint Code (optional) 
<br /> 
<input type="text", id="complaintcode", value="") /> 
</div> 

@Html.ActionLink("Export Case Data To Excel for Analysis", "CaseReport", "Reports", "Excel", new { stringFilter = mystring }) 

Действие контроллера имеет строковый параметр, называемый stringFilter. Мне в основном нужно построить строковый фильтр и передать его контроллеру. Я использую библиотеку Dynamic Linq Query.

Как получить строковые значения из DOM?

+0

Не упустите свой вопрос .. Что вам нужно? Что просит запрос. Форм? Вам нужны значения текстового поля или что? – gaurav

+1

Возможный дубликат? [Как получить значения формы из HTTPPOST] (http://stackoverflow.com/q/5088450/211627) (после чего вы просто конкатенируете строки обычным способом: '' foo "+" bar "') – JDB

+0

@gaurav Мне нужно просто построить строку из значений текстового поля, которые я могу отправить вместе с действием контроллера в ActionLink. Я понимаю, что текстовые поля должны быть завернуты в форму? Когда я буду использовать request.Form? – Ryan

ответ

1

Единственное, что вы можете сделать, это объединить их все в пуговицах клик обработчик событий, somethingk как ..

$('#form-input-submit-button').click(function() { /* do it here & then submit. */ }); 

Но я рекомендую вам иметь в вашем методе действия контроллера MVC все параметры, необходимые

[HttpPost] 
public void CaseReport(string promoId, string coplaintCode, ...) { } 

Или лучше сильно набраны моделируют

public class ReportModel 
{ 
    public string PromoId { get; set; } 
    public string ComplaintCode { get; set; } 
    ... 
} 

Итак, вы могли бы просто:

[HttpPost] 
public void CaseReport(ReportModel model) { /* Validate ModelState */ } 

На самом деле, модель в MVC аббревиатурой является то, что вам нужно.

Но также вы можете сделать

[HttpPost] 
public void CaseReport(FormCollection form) 
{ 
} 

Чтобы увидеть все входящие данные.

+0

Очень хорошие очки. Позвольте мне немного потрудиться. Thx – Ryan

+0

Итак, если я создаю viewmodel, я могу привязать текстовые поля с помощью Razor, а затем передать эту модель обратно в действие контроллера? Мне действительно не нужен объект формы с этим методом? – Ryan

+0

@ Ryan справа. Просто '' элемент с именем, соответствующим имени свойства модели. – AgentFire

Смежные вопросы