Несколько вещей, которые я бы изменил здесь
Во-первых, здесь:
Response.Redirect("url to PageMain");
Вы хотите вместо этого вернуть
RedirectToAction("PageMain")
секунду - сделать Pagemain действительным толькодля получения запросов с использованием атрибута HttpGet.
[HttpGet]
public actionResult PageMain()
{
return View();
// this is the main page I'm working with
}
Третье - сделать это HttpPost
[HttpPost]
Public ActionResult FormAction(string tablename, FormCollection formvalues)
Четвертое - обычно вы увидите, что люди имеют метод GET и метод POST имеют одно и то же имяи один помечен как HttpGet, а другой - как HttpPost, принимающий, конечно, разные типы параметров.
Пятый - я бы порекомендовал вам ваше представление - строго типизированное представление, не основанное на DataTable, а ваш собственный класс - скажем, с именем «Клиент»в верхней части вашего представления вы знаете, что он строго типизирован, когда вы видите что-то вроде (для списка клиентов)
@model IEnumerable<Customer>
Когда вы делаете это, ваш метод FormAction может автоматически принимать объект типа Customer -Model Binder в MVC автоматически сопоставляет значения формы с именами в этом объекте и устанавливает значения свойств.Это одна из замечательных возможностей MVC.Таким образом, ваш метод стал бы:
Public ActionResult FormAction(Customer customer)
, и теперь у вас есть объект клиента, с которым нужно иметь дело.