使用过ASP.NET MVC的请进来,帮忙解决一个很基础的问题

人称猪 2012-07-31 02:12:55
可能是刚接触ASP.NET MVC的时间不长,对于页面间传值一直没有理解。controller怎么向view层取数据?
现在为了方便说明,直接用登陆界面来说明问题:
view层代码

<%= Html.TextBox("TextBoxEmail") %>
<%= Html.Password("TextBoxPassword") %>
<% =Html.ActionLink("点击登陆","LoginResult") %>

这样在control层的action里面怎么接收用户名和密码这两个参数:
我使用了

public ActionResult LoginResult()
{
string email = Request.Form["TextBoxEmail"];//
string password = Request.Form["TextBoxPassword"];//取出来的总是为null
……
}


...全文
145 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lw_881020 2012-08-02
  • 打赏
  • 举报
回复
必须通过GET方式或者POST方式把参数传递到页面,才能用Request获取,比如说用1楼的方法。或者写一个JS,给ActionLink加一个点击事件,然后调用Form表单的Submit提交
deiphi 2012-08-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

引用 8 楼 的回复:

view里面要有form

<% using (Html.BeginForm()) { %>
<%= Html.TextBox("TextBoxEmail") %>
<%= Html.Password("TextBoxPassword") %>
<% =Html.ActionLink("点击登陆","LoginResult") %>
<%}%>

……
[/Quote]

可以用url参数传值,但是这样的话不是把Password暴露了?
MSDNXGH 2012-08-02
  • 打赏
  • 举报
回复
也是表单传值啊,都一样,Html.BeginForm是MVC的帮助类,相当是webform的控件,也是生成表单的,最后,还得靠表单传值
人称猪 2012-08-02
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

view里面要有form

<% using (Html.BeginForm()) { %>
<%= Html.TextBox("TextBoxEmail") %>
<%= Html.Password("TextBoxPassword") %>
<% =Html.ActionLink("点击登陆","LoginResult") %>
<%}%>

controller可以这样
……
[/Quote]

试了一下你的方法,还是不能把这俩个值传过去,我想了下,这个应该和htmlhelper的actionlink的用法有关,因为actionlink只是提供一个超级链接,用户点击按钮的时候打开这个链接,并没有把表单给提交。
我试了下如果不用actionlink,而是使用
<input id="Submit1" type="submit" value="点击登陆" />取代的话则能将参数传到form指定的action中。
希望对后来人有帮助。


不过我现在问题是如果我必须使用actionlink,怎么把这个值传过去呢?使用6楼的方法,把这两个参数new一下再放在actionlink的参数里面,可以吗?

deiphi 2012-07-31
  • 打赏
  • 举报
回复
view里面要有form

<% using (Html.BeginForm()) { %>
<%= Html.TextBox("TextBoxEmail") %>
<%= Html.Password("TextBoxPassword") %>
<% =Html.ActionLink("点击登陆","LoginResult") %>
<%}%>

controller可以这样
public ActionResult LoginResult(string TextBoxEmail, string TextBoxPassword)
{
……
}
人称猪 2012-07-31
  • 打赏
  • 举报
回复
还是没解决啊~~有没有人帮帮我的啊~~
我就是大神 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

试了下楼上的方法还是没解决问题,
是不是要在
Html.ActionLink(("点击登陆","LoginResult"," ")还要加上参数。
如果是,请问怎么加
谢谢大家
[/Quote]这样:@Html.ActionLink(@Common.Details, "Details", new { id = item.Id }
人称猪 2012-07-31
  • 打赏
  • 举报
回复
试了下楼上的方法还是没解决问题,
是不是要在
Html.ActionLink(("点击登陆","LoginResult"," ")还要加上参数。
如果是,请问怎么加
谢谢大家
人称猪 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

public ActionResult LoginResult(stiring TextBoxEmail,string TextBoxPassword)
[/Quote]
我用的是Html.ActionLink,用这种方法他能直接把这两个参数传过去么?
superliu1122 2012-07-31
  • 打赏
  • 举报
回复
public ActionResult LoginResult(stiring TextBoxEmail,string TextBoxPassword)
人称猪 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

当然也可以自定义MODLE接受
VIEW
HTML code

@using (Html.BeginForm()) {
<div>
@Html.TextBox("sss","ttt")


<input type="submit" value="登录" />
</div>
}



Control
C# code

[HttpPost]……
[/Quote]
能说的基础点吗?我不太看得懂cshtml的东西。
  • 打赏
  • 举报
回复
当然也可以自定义MODLE接受
VIEW

@using (Html.BeginForm()) {
<div>
@Html.TextBox("sss","ttt")


<input type="submit" value="登录" />
</div>
}


Control

[HttpPost]
public ActionResult LogOn(LogOnModel model, string returnUrl)
{
string tt = Request.Form["sss"];


// 如果我们进行到这一步时某个地方出错,则重新显示表单
return View(model);
}

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧