You believe that it's a great idea because you're seeing it from the "contractors can't be trusted" side. You believe that it's only fair for the public to know if certain contractors are throwing money at a candidate who inevitably hands them over a big time contract. Fair enough.
Other people are seeing this from "the government can't be trusted" side. If a Republican (Democrat) representative must select from a group of people vying for a contract, whose to say they won't throw out bids that they see are made by people who overwhelmingly gave to Democrat (Republican) campaign funds?
I'm actually from a "more information is always good", "less information is always bad" perspective. The reason is that I don't trust government or corporations. Hence, I want to know what they are doing. If you have information, and someone is doing something you don't like, you can vote them out (or the shareholders can)
First, I don't think most companies gives to only democrats or only republicans. Keep in mind, we are only talking about federal government contractors. Rather, I expect (say) military contractors give to anyone on the Defense appropriations sub-committee, etc. But even granting that-
Assume a Republican(Democrat) consistently veto contractors who gave to the other party. If voters decide that naked partisanship is a bad thing, they'll vote on it. If they don't vote on it, the competitive equilibria is that no contractors give to elections. This leads to a. fair competition for contracts, b. less money for campaigns.